2017-03-27 585 views
0

這是我寫的所有代碼都有一個手部檢測,但不幸的是,當我將它作爲drawHurours()給出一個錯誤。請幫忙!此處附帶的錯誤也是錯誤的。OpenCV錯誤:(-215)npoints> 0在函數cv :: drawContours

import cv2 
import numpy as np 
import math 

key = 0 
skin_lower = (0, 44, 44) 
skin_upper = (28, 133, 128) 
camera = cv2.VideoCapture(0) 

print("Play something!") 
while True: 
    retval, img = camera.read() 
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 
    mask = cv2.inRange(hsv, skin_lower, skin_upper) 
    blurSize = 5 
    elementSize = 5 
    mask = cv2.medianBlur(mask, blurSize) 
    element = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (11, 11), (5, 5)) 
    mask = cv2.dilate(mask, element) 
    _, contours, hierarchy = cv2.findContours(mask.copy(), 
cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 
    largestContour = 0 
    for i in range(1, len(contours)): 
     if cv2.contourArea(contours[i]) > cv2.contourArea(contours[largestContour]): 
      largestContour = i 
    print largestContour 
    cv2.drawContours(img, contours, largestContour, (0, 255, 0), 1) 
    if len(contours) != 0: 
     hull = cv2.convexHull(contours[largestContour], returnPoints=False) 
     print hull 
     cv2.drawContours(img, hull, 0, (255, 0, 0), 3) #error here 

    cv2.imshow('mask', mask) 
    cv2.imshow('image', img) 

    k = cv2.waitKey(1) 
    if k == 27: # wait for ESC key to exit 
     cv2.destroyAllWindows() 
     break 

OUTPUT:

Play something! 
0 
0 
0 
OpenCV Error: Assertion failed (npoints > 0) in cv::drawContours, file 
C:\projects\opencv-python\opencv\modules\imgproc\src\drawing.cpp, line 2481 
Traceback (most recent call last): 
File "F:/PYTHON/AIRKEY/main.py", line 42, in <module> 
cv2.drawContours(img, hull, 0, (255, 0, 0), 3) 
cv2.error: C:\projects\opencv- 
python\opencv\modules\imgproc\src\drawing.cpp:2481: error: (-215) npoints > 
0 in function cv::drawContours 

3 
[[310] 
[290] 
[288] 
[ 97] 
[ 96] 
[ 92] 
[ 81] 
[ 74] 
[ 68] 
[ 43] 
[ 42] 
[ 38] 
[ 34] 
[ 32] 
[ 31] 
[ 13] 
[ 11] 
[ 0] 
[464] 
[458] 
[402] 
[389] 
[387] 
[360] 
[359] 
[353] 
[349] 
[347] 
[345] 
[311]] 
+0

把'cv2.drawContours(IMG,輪廓,largestContour,(0,255,0),1)'在'if len(輪廓)!= 0:' – Miki

+0

確實可以繪製曲線正確處理ConvexHull輸出作爲輸入嗎? – Soltius

+0

啊對...應該可能是:'cv2.drawContours(img,[hull],0,(255,0,0),3)' – Miki

回答

0

這樣做:

cv2.drawContours(img, [hull.astype(int)], 0, (255, 0, 0), 3)

相關問題