我是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()
答案 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异步在帧上执行更大的任务。