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]]
把'cv2.drawContours(IMG,輪廓,largestContour,(0,255,0),1)'在'if len(輪廓)!= 0:' – Miki
確實可以繪製曲線正確處理ConvexHull輸出作爲輸入嗎? – Soltius
啊對...應該可能是:'cv2.drawContours(img,[hull],0,(255,0,0),3)' – Miki