我正在尝试使用opencv和python实现面部识别。 而不是从网络摄像头识别脸,我想识别视频中的脸。 我使用此代码从网络摄像头识别,它的工作原理。但当我改变代码以从视频中读取时,我得到一个错误。
webcam = cv2.VideoCapture(0)
time.sleep(2)
while True:
(_, im) = webcam.read()
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
webcam = cv2.VideoCapture('man.avi')
time.sleep(2)
while True:
(_, im) = webcam.read()
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
要阅读视频,我使用了:
webcam = cv2.VideoCapture('man.avi')
我收到此错误:
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-6-09b5782a88bc> in <module>()
38 while True:
39 (_, im) = webcam.read()
---> 40 gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
41
42 faces = face_cascade.detectMultiScale(gray, 1.3, 5)
Error: ..\..\..\..\opencv\modules\imgproc\src\color.cpp:3739: error: (-215) scn == 3 || scn == 4 in function cv::cvtColor
有关解决问题的任何建议吗?
答案 0 :(得分:0)
你的问题是什么时候
webcam = cv2.VideoCapture('man.avi')
以下
while True:
(_, im) = webcam.read()
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
将读取视频结尾,甚至通过。在那里,im
为空np.array
因此,cvtColor
将失败并给出您看到的错误。检查此条件将消除错误,例如
while True:
(ret, im) = webcam.read()
# end of video, break the loop
if not ret:
break
# valid frame
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)