error: (-215) scn == 3 || scn == 4 in function cv::cvtColor

asked 2020-06-07 08:28:57 -0600

updated 2020-06-07 10:10:11 -0600

supra56 gravatar image

Code:

import cv2, time

first_frame = None

video = cv2.VideoCapture(0)

while True:
    check, frame = video.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    gray = cv2.GaussianBlur(gray,(21,21),0) 

    if first_frame is None:
        first_frame = gray 

    delta_frame = cv2.absdiff(first_frame, gray)
    thresh_frame = cv2.threshold(delta_frame, 30, 255, cv2.THRESH_BINARY)[1]
    thresh_frame = cv2.dilate(thresh_frame, None, iterations = 2) 

    (_, cnts, _) = cv2.findContours(thresh_frame.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0]

    for contour in cnts:
        if cv2.contourArea(contour) < 1000: 
            continue
        (x, y, w, h) = cv2.boundingRect(contour)
        cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 3)

    cv2.imshow("Gray Frame", gray)
    cv2.imshow("Delta Frame", delta_frame)
    cv2.imshow("Threshold Frame", thresh_frame)
    cv2.imshow("Color Frame", frame)

    key = cv2.waitKey(1)
    print(gray)
    print(delta_frame)

    if key == ord('q'):
        break

video.release()
cv2.destroyAllWindows()

Error:

gray = cv2.GaussianBlur(gray,(21,21),0)12 error: OpenCV(3.4.1) C:\Miniconda3\conda-bld\opencv-suite_1533128839831\work\modules\imgproc\src\color.cpp:11147: error: (-215) scn == 3 || scn == 4 in function cv::cvtColor
edit retag flag offensive close merge delete

Comments

Looking @ your error messaged:

gray = cv2.GaussianBlur(gray,(21,21),0)12 error: OpenCV(3.4.1) C:\Miniconda3\conda-bld\opencv-suite_1533128839831\work\modules\imgproc\src\color.cpp:11147: error: (-215) scn == 3 || scn == 4 in function cv::cvtColor

Look @supra56's error:

Traceback (most recent call last):
  File "/home/pi/tmp_opencv4.2/dummy1.py", line 10, in <module>
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.3.0) /home/pi/opencv-4.3.0/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'

I am using OpenCV 4.3.0 and you are using OpenCV 3.4.1. The problem can be solved by changing index to 1. video = cv2.VideoCapture(1).

supra56 gravatar imagesupra56 ( 2020-06-07 12:59:32 -0600 )edit

The output result:

[[138 138 138 ...  62  62  61]
 [138 138 138 ...  63  62  62]
 [138 138 138 ...  63  62  62]
 ...
 [112 112 112 ...  84  83  83]
 [112 112 112 ...  84  83  83]
 [112 112 112 ...  84  83  83]]
[[0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 ...
supra56 gravatar imagesupra56 ( 2020-06-07 13:04:15 -0600 )edit