spyder-ide / spyder

Official repository for Spyder - The Scientific Python Development Environment
https://www.spyder-ide.org
MIT License
8.33k stars 1.61k forks source link

my screen is not showing the frame #9043

Closed ravikanth076 closed 5 years ago

ravikanth076 commented 5 years ago

Description

What steps will reproduce the problem?

my code went run sucesfuly.and webcamera also started.but iam unable to see the frame.

Versions

Dependencies

pyflakes >=0.6.0  :  2.0.0 (OK)
pycodestyle >=2.3 :  2.4.0 (OK)
pygments >=2.0    :  2.3.1 (OK)
sphinx >=0.6.6    :  1.8.2 (OK)
rope >=0.9.4      :  0.11.0 (OK)
jedi >=0.9.0      :  0.13.2 (OK)
nbconvert >=4.0   :  5.4.0 (OK)
pandas >=0.13.1   :  0.23.4 (OK)
numpy >=1.7       :  1.15.4 (OK)
sympy >=0.7.3     :  1.3 (OK)
cython >=0.21     :  0.29.2 (OK)
qtconsole >=4.2.0 :  4.4.3 (OK)
IPython >=4.0     :  7.2.0 (OK)
matplotlib >=2.0.0:  3.0.2 (OK)
pylint >=0.25     :  2.2.2 (OK)
goanpeca commented 5 years ago

@ravikanth076 please attach a screenshot an elaborate on what the issue is

ravikanth076 commented 5 years ago

import cv2 import numpy as np import math cap = cv2.VideoCapture(0)

while(1): try:

    #an error comes if it does not find anything in window as it cannot find contour of max area
    #therefore this try error statement

    ret,frame = cap.read()
    frame=cv2.flip(frame,1)
    kernel = np.ones((3,3),np.uint8)

    #define region of interest

    roi=frame[100:300, 100:300]
    cv2.rectangle(frame,(100,100),(300,300),(0,255,0),0)    
    hsv = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV)

    #define range of skin color in HSV

    lower_skin = np.array([0,20,70], dtype=np.uint8)
    upper_skin = np.array([20,255,255], dtype=np.uint8)

    #extract skin colur imagw

    mask = cv2.inRange(hsv, lower_skin, upper_skin)

    #extrapolate the hand to fill dark spots within

    mask = cv2.dilate(mask,kernel,iterations = 4)

    #blur the image

    mask = cv2.GaussianBlur(mask,(5,5),100) 

    #find contours

    _,contours,hierarchy= cv2.findContours(mask,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

    #find contour of max area(hand)

    cnt = max(contours, key = lambda x: cv2.contourArea(x))

    #approx the contour a little

    epsilon = 0.0005*cv2.arcLength(cnt,True)
    approx= cv2.approxPolyDP(cnt,epsilon,True)

    #make convex hull around hand

    hull = cv2.convexHull(cnt)

    #define area of hull and area of hand

    areahull = cv2.contourArea(hull)
    areacnt = cv2.contourArea(cnt)

    #find the percentage of area not covered by hand in convex hull

    arearatio=((areahull-areacnt)/areacnt)*100

    #find the defects in convex hull with respect to hand

    hull = cv2.convexHull(approx, returnPoints=False)
    defects = cv2.convexityDefects(approx, hull)

    #l = no. of defects

    l=0

    #code for finding no. of defects due to fingers

    for i in range(defects.shape[0]):
        s,e,f,d = defects[i,0]
        start = tuple(approx[s][0])
        end = tuple(approx[e][0])
        far = tuple(approx[f][0])
        pt= (100,180)

        #find length of all sides of triangle

        a = math.sqrt((end[0] - start[0])**2 + (end[1] - start[1])**2)
        b = math.sqrt((far[0] - start[0])**2 + (far[1] - start[1])**2)
        c = math.sqrt((end[0] - far[0])**2 + (end[1] - far[1])**2)
        s = (a+b+c)/2
        ar = math.sqrt(s*(s-a)*(s-b)*(s-c))

        #distance between point and convex hull

        d=(2*ar)/a

        #apply cosine rule here

        angle = math.acos((b**2 + c**2 - a**2)/(2*b*c)) * 57

        #ignore angles > 90 and ignore points very close to convex hull(they generally come due to noise)

        if angle <= 90 and d>30:
            l += 1
            cv2.circle(roi, far, 3, [255,0,0], -1)

        #draw lines around hand

        cv2.line(roi,start, end, [0,255,0], 2)

    l+=1

    #print corresponding gestures which are in their ranges

    font = cv2.FONT_HERSHEY_SIMPLEX
    if l==1:
        if areacnt<2000:
            cv2.putText(frame,'Put hand in the box',(0,50), font, 2, (0,0,255), 3, cv2.LINE_AA)
        else:
            if arearatio<12:
                cv2.putText(frame,'0',(0,50), font, 2, (0,0,255), 3, cv2.LINE_AA)
            elif arearatio<17.5:
                cv2.putText(frame,'Best of luck',(0,50), font, 2, (0,0,255), 3, cv2.LINE_AA)

            else:
                cv2.putText(frame,'1',(0,50), font, 2, (0,0,255), 3, cv2.LINE_AA)

    elif l==2:
        cv2.putText(frame,'2',(0,50), font, 2, (0,0,255), 3, cv2.LINE_AA)

    elif l==3:

          if arearatio<27:
                cv2.putText(frame,'3',(0,50), font, 2, (0,0,255), 3, cv2.LINE_AA)
          else:
                cv2.putText(frame,'ok',(0,50), font, 2, (0,0,255), 3, cv2.LINE_AA)

    elif l==4:
        cv2.putText(frame,'4',(0,50), font, 2, (0,0,255), 3, cv2.LINE_AA)

    elif l==5:
        cv2.putText(frame,'5',(0,50), font, 2, (0,0,255), 3, cv2.LINE_AA)

    elif l==6:
        cv2.putText(frame,'reposition',(0,50), font, 2, (0,0,255), 3, cv2.LINE_AA)

    else :
        cv2.putText(frame,'reposition',(10,50), font, 2, (0,0,255), 3, cv2.LINE_AA)

        #show the windows

    cv2.imshow('mask',mask)
    cv2.imshow('frame',frame)
except:
    pass

if cv2.waitKey(25) & 0xFF == ord('q'):
    break

cv2.destroyAllWindows() cap.release()

ccordoba12 commented 5 years ago

This is not an error in Spyder but in your code, sorry.

ravikanth076 commented 5 years ago

3 days ago it worked fine. But yesterday onwards what happened i dont know. I run the same code but it it not working.i didnt change the code. The code is correct upto my knowledge.

On Thu, Mar 28, 2019, 4:14 PM Carlos Cordoba notifications@github.com wrote:

This is not an error in Spyder but in your code, sorry.

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/spyder-ide/spyder/issues/9043#issuecomment-477542473, or mute the thread https://github.com/notifications/unsubscribe-auth/AuTZ9b395mO24fCEcA6NqMDWYsn3DsIqks5vbJz1gaJpZM4cOaSJ .

ccordoba12 commented 5 years ago

We understand that's very frustrating, but we don't have time to help you understand what happened. Besides, the cause is (most probably) not related to Spyder.