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.
just use forward slashes, even on windows ...
I tried that too, same exact error
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.
Okay, I believe I've removed the argument parsers correctly, but I'm not sure. The upper part of my code looks like this:
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 It worked for me.
VisionTest2.py [-h] image
?