Ask Your Question

Error when running example code

asked 2020-03-25 13:54:22 -0500

HunterP gravatar image

I've been following this tutorial, but once I ran the second script when analyzing the white car moving, I received the following error in Python's shell:

usage: [-h] image error: the following arguments are required: image

My code is as follows:

import numpy as np
import cv2 as cv
import argparse

parser = argparse.ArgumentParser(description='This sample demonstrates the meanshift algorithm. \
                                              The example file can be downloaded from: \')
parser.add_argument('image', type=str, help = r"C:\Users\Hunter\Desktop\123.PNG")
args = parser.parse_args()

cap = cv.VideoCapture(args.image)

# take first frame of the video
ret,frame =

# setup initial location of window
x, y, w, h = 300, 200, 100, 50 # simply hardcoded the values
track_window = (x, y, w, h)

# set up the ROI for tracking
roi = frame[y:y+h, x:x+w]
hsv_roi =  cv.cvtColor(roi, cv.COLOR_BGR2HSV)
mask = cv.inRange(hsv_roi, np.array((0., 60.,32.)), np.array((180.,255.,255.)))
roi_hist = cv.calcHist([hsv_roi],[0],mask,[180],[0,180])

# Setup the termination criteria, either 10 iteration or move by atleast 1 pt
term_crit = ( cv.TERM_CRITERIA_EPS | cv.TERM_CRITERIA_COUNT, 10, 1 )

    ret, frame =

if ret == True:
    hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
    dst = cv.calcBackProject([hsv],[0],roi_hist,[0,180],1)

    # apply meanshift to get the new location
    ret, track_window = cv.meanShift(dst, track_window, term_crit)

    # Draw it on image
    x,y,w,h = track_window
    img2 = cv.rectangle(frame, (x,y), (x+w,y+h), 255,2)

    k = cv.waitKey(30) & 0xff
    if k == 27:

I'm using python 3.6.5 and OpenCV 4.2.0 installed via pip.

Also, something to point out in this line,

parser.add_argument('image', type=str, help = r"C:\Users\Hunter\Desktop\123.PNG")

the "r" before the path to the image is supposed to denote a raw string in order to prevent python from reading the \U as Unicode, however, in my python IDLE, it seems to indicate the r as part of the string. Furthermore, the r denoted with the code feature on this forum is not part of the string. Maybe this is an issue?

Quick update, the r does not seem to cause the issue. I placed the same image in my C: directory and adressed it with no "R", and the same error occurred.

edit retag flag offensive close merge delete


just use forward slashes, even on windows ...

berak gravatar imageberak ( 2020-03-25 13:59:15 -0500 )edit

I tried that too, same exact error

HunterP gravatar imageHunterP ( 2020-03-25 14:02:38 -0500 )edit

add_argument just describes the arguments to the app. The path in "help" is a help string. You need to pass the image path on the command line. If you don't wish to do that, don't use any argument parsers.

mvuori gravatar imagemvuori ( 2020-03-25 14:47:20 -0500 )edit

Okay, I believe I've removed the argument parsers correctly, but I'm not sure. The upper part of my code looks like this:

import numpy as np
import cv2 as cv
cap = cv.VideoCapture('C:/Users/Hunter/Desktop/123.png')

However, when I run the script, nothing seems to happen or pop up. Also, if you can't tell, I'm an OpenCV noob

HunterP gravatar imageHunterP ( 2020-03-25 16:45:56 -0500 )edit

@HunterP It worked for me.

  • Did you downloaded mp4?
  • How did you write command?
  • Did you get help [-h] image?
supra56 gravatar imagesupra56 ( 2020-03-26 12:16:34 -0500 )edit

1 answer

Sort by ยป oldest newest most voted

answered 2020-10-03 12:29:02 -0500

HunterP gravatar image

Looking back at this, I was attempting to open a png file with VideoCapture()

When opening a png file, you must use cv2.imread("path/to/image")

when opening a video, you must use cv2.VideoCapture("/path/to/video")

when accessing a webcam, you must use cv2.VideoCapture(webcam_device_id), where webcam_device_id is an integer, usually 0, 1, or 2

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2020-03-25 13:51:05 -0500

Seen: 198 times

Last updated: Oct 03 '20