python - opencv error : error while displaying rectangle -
i m not able rectify error. m following official opencv python tutorial. m passing video here , doing meanshift.
below code:
import numpy np import cv2 cap = cv2.videocapture("slow.mp4") # take first frame of video ret,frame = cap.read() # setup initial location of window r,h,c,w = 250,90,400,125 # hardcoded values track_window = (c,r,w,h) # set roi tracking roi = frame[r:r+h, c:c+w] hsv_roi = cv2.cvtcolor(frame, cv2.color_bgr2hsv) mask = cv2.inrange(hsv_roi, np.array((0., 60.,32.)), np.array((180.,255.,255.))) roi_hist = cv2.calchist([hsv_roi],[0],mask,[180],[0,180]) cv2.normalize(roi_hist,roi_hist,0,255,cv2.norm_minmax) # setup termination criteria, either 10 iteration or move atleast 1 pt term_crit = ( cv2.term_criteria_eps | cv2.term_criteria_count, 10, 1 ) while(1): ret ,frame = cap.read() if ret == true: hsv = cv2.cvtcolor(frame, cv2.color_bgr2hsv) dst = cv2.calcbackproject([hsv],[0],roi_hist,[0,180],1) # apply meanshift new location ret, track_window = cv2.meanshift(dst, track_window, term_crit) # draw on image x,y,w,h = track_window img2 = cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.imshow('img2',img2) k = cv2.waitkey(60) & 0xff if k == 27: break else: cv2.imwrite(chr(k)+".jpg",img2) else: break cv2.destroyallwindows() cap.release() cv2.imshow('img2',img2)
this line showing error. execution stops @ line. have done debugging too.
error following :
opencv error: assertion failed (size.width>0 && size.height>0) in imshow, file /build/buildd/opencv-2.4.8+dfsg1/modules/highgui/src/window.cpp, line 269 traceback (most recent call last): file "programs/test14.py", line 36, in <module> cv2.imshow('img2',img2) cv2.error: /build/buildd/opencv-2.4.8+dfsg1/modules/highgui/src/window.cpp:269: error: (-215) size.width>0 && size.height>0 in function imshow
in opencv2.4.x rectangle
function return none
- it's modify image in-place. use opencv3 or modify code:
cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.imshow('img2',frame)
instead of
img2 = cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.imshow('img2',img2)
Comments
Post a Comment