2013-09-27 2 views
3

며칠 후 opencv 응용 프로그램 내부에서 iSight 카메라를 열 수 없으므로 더 이상 사용할 수 없습니다. cap = cv2.VideoCapture(0)이 반환되고 cap.isOpened()true을 반환합니다. 그러나 cap.grab()false을 반환합니다. 어떤 아이디어?OpenCV는 MacBook Pro iSight에서 캡처하지 않습니다.

예제 코드 :

import cv2 

cv2.namedWindow("preview") 
vc = cv2.VideoCapture(0) 
rval = True 

while rval: 
    rval, frame = vc.read() 
    cv2.imshow("preview", frame) 

    key = cv2.waitKey(20) 
    if key == 27: # exit on ESC 
     break 
  • 맥 OS 10.8.5
  • 파이썬 2.7.5 (뿐만 아니라 C 내부에서 작동하지 ++ 응용 프로그램)
  • OpenCV의 2.4.6.1
+0

이것을 알아 냈습니까? 나는 다시 여기에서 묻고있다 : http://stackoverflow.com/questions/19187076/capturing-from-macbook-pro-isight-with-opencv – escapecharacter

답변

8

이것은 (OSX 10.6에서) 귀하의 코드로 카메라를 작동시키는 방법입니다.

import cv2 

cv2.namedWindow("preview") 
vc = cv2.VideoCapture(0) 

rval, frame = vc.read() 

while True: 

    if frame is not None: 
    cv2.imshow("preview", frame) 
    rval, frame = vc.read() 

    if cv2.waitKey(1) & 0xFF == ord('q'): 
    break 
+0

고마워. 완전히 다시 설치 한 후에 다시 작동하는 것 같습니다. 또한 입력 채널을 설정하는 데 시간이 오래 걸렸을 수도 있습니다. 프레임은 실제로 read()에 대한 두 번째 또는 세 번째 호출에서만 제공됩니다. 이 문제가 더 일찍 발생하지 않았 음 –

0

이미지를 가져온 후에 세그먼트 오류가 발생했습니다. cv2.destroyAllWindows()cap.release() 전에 사용했다는 것이 밝혀졌습니다. 아래에서는 작업 코드를 보여줍니다.

cap = cv2.VideoCapture(0) 

while(True): 
    ret, frame = cap.read() 
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
    cv2.imshow('frame',gray) 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 

#do some ops 

cap.release() 
cv2.imshow("output", output) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

이 코드는 El Captain에서 작동합니다.

+0

코드 편집 내용과 질문에 대한 대답을 설명하는 답변을 편집하십시오. –

+0

@ alex-attinger는 이미지 잡기에 문제가 있습니다. 나는 그림을 잡고 MacOS에서 작동하는 코드를 보여 주었다. –

+0

귀하의 코드가 문제를 해결할 수 있다고 생각합니다. 그러나 원본에 무엇이 잘못되었으며 귀하의 코드가 실제로 문제를 해결하는 방법을 설명하면 훨씬 더 유용합니다. 특히이 질문은 2013 년부터입니다. –

관련 문제