Home > database >  OpenCV(4.5.5) :-1: error: (-5:Bad argument) in function 'cvtColor'
OpenCV(4.5.5) :-1: error: (-5:Bad argument) in function 'cvtColor'

Time:03-02

Can you guys help me? I'm trying to use my own data (path = data) to create a dataset by applying the mediapipe on my videos. The processed vid (.ny) will be in output folder (path = O_Video) which I have declared previously. No of seq is 30 as I have 30 videos with the start_folder = 0 and start_video = 0.

videos = cv2.VideoCapture(IMPORT_DATA)
videos_input = cv2.cvtColor(videos, cv2.COLOR_BGR2RGB)

# Set mediapipe model 
with mp_holistic.Holistic(min_detection_confidence=0.5, min_tracking_confidence=0.5) as holistic:
    
    # NEW LOOP
    # Loop through actions
    for action in actions:
    # Loop through sequences aka videos
        for sequence in range(start_folder, start_video no_sequences):

                # get results
            results = mp_face.process(videos_input)

            for detection in results.detections: # iterate over each detection and draw on image
                  mp_drawing.draw_detection(videos, detection)
                
                
                # NEW Export keypoints
            keypoints = extract_keypoints(results)
            npy_path = os.path.join(DATA_PATH, action, str(sequence))
            np.save(npy_path, keypoints)

                # Break gracefully
            if cv2.waitKey(10) & 0xFF == ord('q'):
                break
                    
    cap.release()
    cv2.destroyAllWindows()

Error that I'm getting is as below:

Error                                     Traceback (most recent call last)
Input In [15], in <module>
      1 videos = cv2.VideoCapture(IMPORT_DATA)
----> 2 videos_input = cv2.cvtColor(videos, cv2.COLOR_BGR2RGB)
      4 # Set mediapipe model 
      5 with mp_holistic.Holistic(min_detection_confidence=0.5, min_tracking_confidence=0.5) as holistic:
      6     
      7     # NEW LOOP
      8     # Loop through actions

error: OpenCV(4.5.5) :-1: error: (-5:Bad argument) in function 'cvtColor'
> Overload resolution failed:
>  - src is not a numpy array, neither a scalar
>  - Expected Ptr<cv::UMat> for argument 'src'

CodePudding user response:

You can't pass a VideoCapture object to cvtColor.

You have to pass each frame (numpy array) individually.

CodePudding user response:

you need to capture the frame data as shown below.

videos = cv2.VideoCapture(IMPORT_DATA)
# Capture the video by frame
ret, frame = videos.read()
# check ret for success and then do this
videos_input = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

  • Related