OPenCV 3.3.0 的网络摄像头启动问题
Posted
技术标签:
【中文标题】OPenCV 3.3.0 的网络摄像头启动问题【英文标题】:Webcam launching issues with OPenCV 3.3.0 【发布时间】:2017-09-18 12:28:33 【问题描述】:我注意到我在构建 opencv_contrib 模块后就开始遇到这个问题,因为在我的代码正常工作之前,现在即使使用简单的面部检测程序,我也无法使用 opencv 访问我的网络摄像头。相反,我得到了这个错误:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.error: /io/opencv/modules/imgproc/src/color.cpp:10638: error: (-215) scn == 3 || scn == 4 in function cvtColor
但是对于一个打开相机的简单程序,它只是退出我认为它在 ret, frame = cam.read
行读取 ret 为 false
这是我的启动代码:网络摄像头
import cv2
cv2.namedWindow("preview")
cam = cv2.VideoCapture(0)
if cam.isOpened(): # try to get the first frame
ret, frame = cam.read()
else:
ret = False
while ret:
cv2.imshow("preview", frame)
ret, frame = cam.read()
key = cv2.waitKey(20)
if key == 27:
break
cv2.destroyWindow("preview")
cam.release()
In[5] print (cv2.__version__)
3.3.0
In[6] webcam = cv2.VideoCapture(0)
ret,frame = webcam.read()
print (ret)
False
【问题讨论】:
代码没有任何问题。我怀疑一些编译问题。找出答案的唯一方法,在没有opencv_contrib
的情况下进行编译,并确保您的网络摄像头没有问题。
我很惊讶它仍然无法工作,但我可以将我的网络摄像头与其他应用程序一起使用。我使用的是 Linux 系统
你是如何安装 contrib 模块的?
我使用参数 OPENCV_EXTRA_MODULES 编译它,我还使用了 pip opencv-contrib
【参考方案1】:
这可能不是最好的解决方案,但我不得不删除 /usr/local/lib/python2.7
和 /usr/local/lib/python3.5/dist-packages
中已编译的 cv2.so
文件
并从头开始安装
从我的构建目录:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules -D BUILD_EXAMPLES=ON ..
make -j7
make install
sudo ldconfig
【讨论】:
以上是关于OPenCV 3.3.0 的网络摄像头启动问题的主要内容,如果未能解决你的问题,请参考以下文章