error: (-215) scn == 3 || scn == 4 in function cvtColor when usig video from webcam in Ubuntu

error: (-215) scn == 3 || scn == 4 in function cvtColor when usig video from webcam in Ubuntu

我有一个 flask 服务器托管一个 http 服务器。在我的笔记本电脑中使用 Ubuntu 16.04。我有下一个代码将灰色帧发送到服务器。

    import cv2
    import time
    from kafka import KafkaClient, SimpleProducer

    kafka = KafkaClient('xxx.xxx.xxx.xxx:9092')
    producer = SimpleProducer(kafka)
    topic = 'TutorialTopic'

    def video_emmiter():
        cap = cv2.VideoCapture(0)
        if(cap.isOpened() < 0):
            print("Camera can't opend")
            return -1
        while(True):
            ret, frame = cap.read()
            rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)   
            ret, jpeg = cv2.imencode('.jpeg', rgb)
            print(len(jpeg))
            producer.send_messages(topic, jpeg.tobytes())
            if cv2.waitKey(1) & 0xFF == ord('q'):
                out = cv2.imwrite('capture.jpg', rgb)
                break

            time.sleep(0.01)

        cap.release()

    if __name__ == '__main__':
        print("start transmision")
        video_emmiter()

我收到以下错误:

start transmision
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /io/opencv/modules/imgproc/src/color.cpp, line 10638
Traceback (most recent call last):
  File "cam.py", line 30, in <module>
    video_emmiter()
  File "cam.py", line 16, in video_emmiter
    rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)   
cv2.error: /io/opencv/modules/imgproc/src/color.cpp:10638: error: (-215) scn == 3 || scn == 4 in function cvtColor

我看了说可能是摄像头驱动,如果是这些我现在怎么设置驱动呢。

还有其他建议吗?

希望这对您有所帮助。 检查您是否将视频正确地提供给程序。 处理图像文件时,如果在特定位置找不到文件,就会弹出此错误。