Ask Your Question
0

error: (-215) size.width>0 && size.height>0 in function cv::imshow

asked 2017-01-23 04:45:30 -0600

sadi gravatar image

I used python2.7 and opencv 2.4 . I want track 3 type color, but I have problem with this statement:

cv2.imshow("t",img)

my code is :

#importing modules

import cv2   
import numpy as np

#capturing video through webcam
webcam = cv2.VideoCapture(0)

while(webcam.isOpened()):

    ret, img = webcam.read()
    if ret:
        hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

    #definig the range of red color
        red_lower=np.array([136,87,111],np.uint8)
        red_upper=np.array([180,255,255],np.uint8)

    #defining the Range of Blue color
        blue_lower=np.array([99,115,150],np.uint8)
        blue_upper=np.array([110,255,255],np.uint8)

    #defining the Range of yellow color
        yellow_lower=np.array([22,60,200],np.uint8)
        yellow_upper=np.array([60,255,255],np.uint8)

    #finding the range  of red,blue and yellow color in the image
        red=cv2.inRange(hsv, red_lower, red_upper)
        blue=cv2.inRange(hsv,blue_lower,blue_upper)
        yellow=cv2.inRange(hsv,yellow_lower,yellow_upper)

    #Morphological transformation, Dilation     
        kernal = np.ones((5 ,5), "uint8")

        red=cv2.dilate(red, kernal)
        res=cv2.bitwise_and(img, img, mask = red)

        blue=cv2.dilate(blue,kernal)
        res1=cv2.bitwise_and(img, img, mask = blue)

        yellow=cv2.dilate(yellow,kernal)
        res2=cv2.bitwise_and(img, img, mask = yellow)



       #Tracking the Red Color
        (contours, hierarchy)=cv2.findContours(red,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
        #cv2.findContours(red, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE[, contours[, hierarchy[, offset]]])
        for pic, contour in enumerate(contours):
            area = cv2.contourArea(contour)
            if(area>300):
                x,y,w,h = cv2.boundingRect(contour) 
                img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)
                cv2.putText(img,"RED color",(x,y),cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0,0,255))
        #Tracking the Blue Color
        (contours, hierarchy)=cv2.findContours(blue,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
        for pic, contour in enumerate(contours):
            area = cv2.contourArea(contour)
            if(area>300):
                x,y,w,h = cv2.boundingRect(contour) 
                img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
                cv2.putText(img,"Blue color",(x,y),cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255,0,0))
     #Tracking the yellow Color
        (contours, hierarchy)=cv2.findContours(yellow,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
        for pic, contour in enumerate(contours):
            area = cv2.contourArea(contour)
            if(area>300):
                x,y,w,h = cv2.boundingRect(contour) 
                img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
                cv2.putText(img,"yellow  color",(x,y),cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0,255,0))
        cv2.imshow("t",img)  
        #cv2.imshow("Redcolour",red)
        #cv2.imshow("red",res)  
        if cv2.waitKey(10) & 0xFF == ord('q'):
                cap.release()
                cv2.destroyAllWindows()
                break
edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted
0

answered 2017-01-24 11:57:47 -0600

updated 2017-01-24 12:00:37 -0600

When you post code, try to cut the irrelevant parts for the problem, no one is gonna go through this code..

That said, the problem is what OpenCV is trying to tell you. Img comes with size = (0,0) when you try to display it, and obviously OpenCV can't display an image with 0 pixels. Why is this? I will not go through your code to figure it out, but I will tell you the debugging techniques necessary for you to figure it out yourself.

Eliminate all code related with your algorithm, and leave just the VideoCapture and display of image directly from webcam. Does this problem occur again? Then there is a problem either with your webcam or with the way it is connected to you computer (For some reason I think this will be the case).

Is the image displaying correctly? Then the problem lies somewhere ahead. Add the next step of your algorithm and verify if it is causing it to break Img. Repeat this until you find the source of the problem. Most of the times this will be enough for you to understand where you made a mistake. If you find what is causing the problem but can't understand why, we are here to help.

Good luck!

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2017-01-23 04:45:30 -0600

Seen: 3,570 times

Last updated: Jan 24 '17