2013-09-27 7 views
3

С тех пор, как я не могу открыть свою камеру iSight изнутри приложения opencv. cap = cv2.VideoCapture(0) возвращается, и cap.isOpened() возвращает true. Однако cap.grab() просто возвращает false. Есть идеи?OpenCV wont 'захват из 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 
  • Mac OS 10.8.5
  • Python 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

Спасибо. Кажется, снова работать после полной переустановки. Кроме того, может потребоваться больше времени для настройки входного канала. Кадр фактически приходит только на второй или третий вызов для чтения(). Раньше не было этой проблемы –

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 года –

Смежные вопросы