回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我是Python和OpenCV的初学者。我正在尝试一段代码,它从摄像头中获取输入图像。下面是一段代码。</p>
<pre><code>cam = create_capture(video_src, fallback='synth:bg=../cpp/lena.jpg:noise=0.05')
while True:
ret, img = cam.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = cv2.equalizeHist(gray)
rects = detect(gray, cascade)
vis = img.copy()
draw_rects(vis, rects, (0, 255, 0))
for x1, y1, x2, y2 in rects:
roi = gray[y1:y2, x1:x2]
vis_roi = vis[y1:y2, x1:x2]
subrects = detect(roi.copy(), nested)
draw_rects(vis_roi, subrects, (255, 0, 0))
dt = clock() - t
draw_str(vis, (20, 20), 'time: %.1f ms' % (dt*1000))
cv2.imshow('facedetect', vis)
if 0xFF & cv2.waitKey(5) == 27:
break
cv2.setMouseCallback('facedetect',capture_image)
cv2.destroyAllWindows()
</code></pre>
<p>我同时使用Python2.7和Python3.4来执行这一点。两者我都面临一个奇怪的问题。代码给出了这样的断言错误</p>
<blockquote>
<p>OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cv::cvtColor, file ........\opencv\modules\imgproc\src\color.cpp, line 3737
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.error: ........\opencv\modules\imgproc\src\color.cpp:3737: error: (-215) scn == 3 || scn == 4 in function cv::cvtColor</p>
</blockquote>
<p>但它只在每一次跑步的交替时间发生。可能是什么问题?我从其他文章中了解到,当<code>cv2.cvtColor</code>试图转换没有3或4个通道的空图像时,会发生此错误。当指定了错误的路径时,通常会发生这种情况。对我来说,因为它每一次都运行良好,所以来源不可能是错误的。请帮忙!!</p>