Python Opencv 2.4.X Videocamera错误

时间:2016-10-14 14:39:22

标签: python-2.7 opencv image-processing

我是opencv python编程的新手,我只是按照youtube上的教程,在我的Windows机器上运行现成的代码。我的安装步骤都是正确的,但我无法使用我的内置笔记本电脑相机与球跟踪或任何代码。如果我改变代码中的行

来自

cap = cv2.VideoCapture(0)

cap = cv2.VideoCapture('video.mp4')

一切都很有效。只是我无法使用笔记本电脑相机,这是我得到的错误

  

OpenCV错误:断言失败(scn == 3 || scn == 4)在cv :: cvtColor中,文件........ \ opencv \ modules \ imgproc \ src \ color.cpp,第3739行   Traceback(最近一次调用最后一次):     文件“C:/ Python Programs Pycharm / Opencv_test.py”,第11行,in       gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)   cv2.error:........ \ opencv \ modules \ imgproc \ src \ color.cpp:3739:错误:(-215)scn == 3 ||函数cv :: cvtColor中的scn == 4

最后这是我从堆栈溢出中使用的代码,只是为了测试我的视频源

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):

        #Capture Frame by Frame
        ret, frame = cap.read()

        # our operations on the frame come here
        gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)

        #Display the resulting frame
        cv2.imshow('frame', gray)
        if cv2.waitKey(1) & 0xFF == ord('q'):
           break

#When everything done, release the capture 
cap.release()
cv2.destroyAllWindows()

2 个答案:

答案 0 :(得分:0)

抱歉,由于我缺乏声誉,我无法发表评论。你的代码没有任何问题。但是找不到相机。尝试不同的地址,如cap = cv2.VideoCapture(1)或查看相机硬件。

答案 1 :(得分:0)

似乎错误是由您尝试重新着色引起的。您应该添加

之类的支票
if not ret or not frame:
    break

这将确认您的相机未提供任何输入。它还会告诉您视频何时结束,因此一般来说,这是一个好主意。如果这不是问题,请尝试打印出框架print(frame.shape)的形状,它应该是(W,L,3)。

我还看到您标记了这个问题python2.7。对python2.7的支持即将结束,因此我建议使用python3,因为它还可以使您与asyncio异步在帧上执行更大的任务。