2
votes

I have a project in raspberry pi and I am using python. However I have a problem with the OpenCV when I am trying to run this code:

`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()`

I get this error:

OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /home/pi/opencv-3.1.0/modules/imgproc/src/color.cpp, line 8000

Traceback (most recent call last):
  File "test.py", line 11, in <module>
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.error: /home/pi/opencv-3.1.0/modules/imgproc/src/color.cpp:8000:  error: (-215) scn == 3 || scn == 4 in function cvtColor"

I have Python 3.4.2,OpenCV 3.1.0 and Numpy 1.8.2.

1
frame appears to be already grascale. So you can avoid the cvtColor line, and just do gray = frame - Miki
i have tried this code even without the "gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)" command but i get pretty much the same error with the difference that in the end says "in function imshow" instead of cvtColor - Fanis Tsatsaronis
Can you provide a single sample frame? What happens if you save a sample frame to a file, read it from file again and proceed as above (ie which step does not work?). Are you sure that video capture works? - tfv
Then you probably don't load the frame correctly in the first place. Check if ret==True, or the frame is None. Or even that cap.isOpened() - Miki
i just tried "if not cap.isOpened(): print("cant open camera")" and when i run it i get this message and after this again the same error.so i guess it has to do with the camera the frame the camera driver i dont know.any ideas??? - Fanis Tsatsaronis

1 Answers

2
votes

So I found an answer. All I had to do was run this code on my raspberry pi:

sudo modprobe bcm2835-v4l2

Thank you for all the help.