为了在项目实施过程中尽量减少问题,我选择在Oracle VM Virtual Box上使用基于Docker的Debian。在这种特定情况下,Virtual Box是通过Windows 8进行的。
我要通过OpenCV访问的网络摄像机是DELL在Venue 11 Pro Tablet上提供的OmniVision OV2722。
我正在使用此资源的路径如下:
devices > webcams
菜单上检查网络摄像头。--device=/dev/video0:/dev/video0
标志的Docker容器来解析网络摄像头。VideoCapture
构造函数不返回NULL指针。cap.isOpened()
检查方法时,相机已打开cap.read()
获取下一帧时,脚本返回select timeout
select timeout
之后,显示以下错误:OpenCV错误:断言失败(buf.data && buuf.idContinuos()) imdecode_,文件 /riit/icv-tmp/opencv-2.4.11/modules/highui/src/loadsave.cpp,第307行
回溯(最近一次通话最后一次):文件“ main.py,第285行,在 ret,frame = cap.read()cv2。错误: /root/ocv-tmp/opencv-2.4.11/modules/hihgui/src/loadsave.coo:307: 错误:(-215)函数代码中的buf.data && buf.isContinuos()_
cv2.VideoCapture.set()
方法调整图片大小:获得HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP
UVCVIDEO
,并设置--nodrop=1
和--timeout=10000
标志。cap = cv2.VideoCapture()
上已经尝试过使用-1、0、1、2、3索引:只有-1和0使我进入了根本错误。 1、2和3在执行时导致致命错误。 主机:Window 8.1 Pro,2GB,Intel Atom Z3775 来宾:Debian 9,1GB DOCKER图片:bamos/openface
我在这里使用的代码是非常标准的,顺便说一句,它是基于OpenCV文档的。
cap = cv2.VideoCapture(0)
if cap is not None and not cap.isOpened():
print 'Found issues on open the camera'
exit()
ret, frame = cap.read()
好吧,我不知道我是否足够具体。请让我知道是否需要更多信息。预先感谢任何对此的支持。
如@MarianD所述,正确的if
语句为if cap is None and not cap.isOpened():
在我已经完成的事情上,我刚刚完成了Windows平板电脑上的网络摄像头驱动程序更新。
答案 0 :(得分:0)
代替
if cap is not None and not cap.isOpened():
使用
if cap is None or not cap.isOpened():
答案 1 :(得分:0)
问题是我当时使用的机器。