问题
Since a couple of days I can't open my iSight camera from inside an opencv application any more. cap = cv2.VideoCapture(0)
returns, and cap.isOpened()
returns true
. However, cap.grab()
just returns false
. Any ideas?
Example Code:
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 (but also not working from inside a C++ app)
- OpenCV 2.4.6.1
回答1:
This is how I got the camera working for your code (on 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
回答2:
I had a segmentation fault after I grab an image. It turned out that I used cv2.destroyAllWindows()
before cap.release()
. Below I show working code.
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()
This code works on El Captain.
来源:https://stackoverflow.com/questions/19059459/opencv-wont-capture-from-macbook-pro-isight