Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Error when running example code

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: VisionTest2.py [-h] image
VisionTest2.py: 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: \

https://www.bogotobogo.com/python/OpenCV_Python/images/mean_shift_tracking/slow_traffic_small.mp4')
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 = cap.read()

# 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])
cv.normalize(roi_hist,roi_hist,0,255,cv.NORM_MINMAX)

# 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 )

while(1):
    ret, frame = cap.read()

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)
    cv.imshow('img2',img2)

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

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.