我正在研究一个使用实时视频分析识别手语的项目。我一直在寻找从视频帧中检测手的轮廓。 我确实将帧转换为灰度,找到轮廓点,但是仍然困惑如何绘制轮廓以使图像脱离图像。我确实看到了一些最好用C ++编写的代码,但是我很困惑(我想用python编写代码)。
请对我保持温柔,因为我是openCV的新手,并且不太了解轮廓。
if __name__=="__main__":
cap = cv2.VideoCapture(0)
#fgbg = cv2.createBackgroundSubtractorMOG2(history=1, varThreshold=30)
aWeight = 0.5
top, right, bottom, left = 10, 250, 425, 650
while(1):
ret, frame = cap.read()
frame = imutils.resize(frame, width=700)
frame = cv2.flip(frame, 1)
clone = frame.copy()
(height, width) = frame.shape[:2]
roi = frame[top:bottom, right:left]
gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (5, 5), 0)
#hsv = cv2.cvtColor(roi,cv2.COLOR_BGR2HSV)
ret,thresh = cv2.threshold(gray,127,255,0)
contour,_ = cv2.findContours(gray, cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
edges = cv2.Canny(gray,100,200)
print(contour)
cv2.drawContours(frame,contour,-1,(0,255,0),3)
我对图像一无所获,因为cv2.imshow()的输出只是我们从canny检测中获得的图像。