我一直在使用OpenCV和ConvexHull和ConvexityDefects方法处理基本的手/手指跟踪代码.
基本上我能够创造出手的轮廓.我现在需要能够计算手指的数量.我知道Convex Hull的起点和终点是指尖,但我不确定如何计算它们以及如何通过在它们上面绘制圆圈来突出它们.
我希望我的代码能够执行这样的操作.
到目前为止,这是我的代码的示例部分:
cvFindContours( hsv_mask, storage, &contours, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) );
CvSeq* contours2 = NULL;
CvRect rect = cvBoundingRect( contours2, 0 );
cvRectangle( bitImage, cvPoint(rect.x, rect.y + rect.height), cvPoint(rect.x + rect.width, rect.y), CV_RGB(200, 0, 200), 1, 8, 0 );
CvSeq* hull = cvConvexHull2( contours2, 0, CV_CLOCKWISE, 0 );
CvSeq* defect = cvConvexityDefects( contours2, hull, dftStorage );
CvBox2D box = cvMinAreaRect2( contours2, minStorage );
cvDrawContours( bg, contours2, CV_RGB( 0, 200, 0), CV_RGB( 0, 100, 0), 1, …Run Code Online (Sandbox Code Playgroud)