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()
OpenCV错误:cvtColor中的断言失败(scn == 3 || scn == 4), 文件/home/pi/opencv-2.4.9/modules/imgproc/src/color.cpp,第3737行 回溯(最近一次调用最后一次):文件“test.py”,第11行,in gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)cv2.error:/home/pi/opencv-2.4.9/modules/imgproc/src/color.cpp:3737:错误: (-215)scn == 3 || scn == 4 in function cvtColor
答案 0 :(得分:2)
当文件名不存在或不是图像时,这通常发生在我身上。
答案 1 :(得分:0)
之所以发生这种情况,是因为从视频中读取图像时出错。您可以尝试以下代码,如果什么都看不到,则说明您的网络摄像头是问题所在。
import cv2
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
while ret:
# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame',gray)
ret, frame = cap.read()
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
答案 2 :(得分:0)
如果您使用 docker 容器来运行代码,则问题可能在于您设置 docker 容器的方式。特别是,在创建容器时,您需要指定一个标志 --device
以在 docker 容器中启用相机使用,如下所示:
docker run --device <device-path> <rest-of-the-paramaters>
在此之前,您需要使用 ls -ltrh /dev/video*
for Ubuntu 检查摄像头设备的路径。通常,路径为 /dev/video0
。