2013-09-27 155 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 
  • 的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

謝謝。似乎在完成重新安裝後再次工作。另外,可能需要更長的時間來設置輸入通道。一幀實際上只在第二次或第三次調用read()時纔會出現。之前沒有此問題 –

0

我抓取圖像後出現分段錯誤。原來,我在cap.release()之前使用cv2.destroyAllWindows()。下面我顯示工作代碼。

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年起 –