Ask Your Question
0

openCV imshow does not show image

asked 2016-11-11 01:55:49 -0600

irum gravatar image

updated 2016-11-11 02:08:04 -0600

berak gravatar image

Below is my code and i am having this error : File "imgTrack.py", line 37, in <module> cv2.imshow('img2',img2) cv2.error: /home/irum/OpenCv/modules/highgui/src/window.cpp:269: error: (-215) size.width>0 && size.height>0 in function imshow

Whats there that i am missing?

import numpy as np
import cv2
from matplotlib import pyplot as plt
cap = cv2.VideoCapture(0)

# take first frame of the video
ret,frame = cap.read()

# setup initial location of window
r,h,c,w = 250,90,400,125  # simply hardcoded the values
track_window = (c,r,w,h)

# set up the ROI for 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 the termination criteria, either 10 iteration or move by 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 to get the new location
        ret, track_window = cv2.CamShift(dst, track_window, term_crit)

        # Draw it on image
        pts = cv2.cv.BoxPoints(ret)
        pts = np.int0(pts)
        img2 = cv2.polylines(frame,[pts],True, 255,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()
edit retag flag offensive close merge delete

Comments

are you using opencv 2.4 ?

berak gravatar imageberak ( 2016-11-11 02:09:02 -0600 )edit

1 answer

Sort by ยป oldest newest most voted
0

answered 2016-11-11 02:15:14 -0600

berak gravatar image

updated 2016-11-11 02:24:53 -0600

there are some differences between the opencv3 and opencv2.4 bindings, - with the 3.1 ones, the drawing calls like cv2.circle, cv2.rectangle or cv2.polylines return a new image , but the 2.4 versions do not

so, in your case, cv2.polylines returns None, and you're trying to imshow() an invalid/empty image.

solution:

    cv2.polylines(frame,[pts],True, 255,2)
    cv2.imshow('img2',frame) # just show the frame, you've drawn into.
edit flag offensive delete link more

Comments

Thank you Berak my problem is solved but now i am having another problem i was trying to track the face but the tracking window doesn't do that its just span to half of the display window, is there anything that you can help with ?

irum gravatar imageirum ( 2016-11-11 04:25:16 -0600 )edit

sorry, but i don't understand, what you're saying now. " its just span to half of the display window,"

berak gravatar imageberak ( 2016-11-11 04:41:41 -0600 )edit

i have solved it ... and Thanks a lot for the help :)

irum gravatar imageirum ( 2016-11-16 01:21:54 -0600 )edit

Question Tools

1 follower

Stats

Asked: 2016-11-11 01:55:49 -0600

Seen: 13,791 times

Last updated: Nov 11 '16