opencv错误断言失败python

时间:2015-06-23 05:36:25

标签: python opencv

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

3 个答案:

答案 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