【发布时间】:2017-05-22 21:00:34
【问题描述】:
我正在做一个手部识别项目。此时我能够检测到手,并使用以下代码找到手的轮廓和凸包点:
Contour<Point> contours = imageThreshold.FindContours(Emgu.CV.CvEnum.CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE,
Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_LIST, storage);
Contour<Point> largestcontour = contours;
while (contours != null)
{
if(largestcontour.Area < contours.Area)
{
largestcontour = contours;
}
contours = contours.HNext;
}
if (largestcontour != null)
{
Seq<Point> convexHull = largestcontour.GetConvexHull(Emgu.CV.CvEnum.ORIENTATION.CV_CLOCKWISE);
foreach (var hullPoint in convexHull)
{
CvInvoke.cvCircle(ColorFrame, hullPoint, 3, new MCvScalar(255), 2, Emgu.CV.CvEnum.LINE_TYPE.EIGHT_CONNECTED, 0);
}
CvInvoke.cvDrawContours(ColorFrame, convexHull, new MCvScalar(255),
new MCvScalar(128), 1, 1, Emgu.CV.CvEnum.LINE_TYPE.EIGHT_CONNECTED, new Point(0, 0));
}
在输出中,每个指尖上都有多个点。我想要的是在每个指尖上得到一个点。
在做了一些研究之后,我的理解是,要在每个指尖上得到一个点,我需要找到距凸包中每个顶点最远的点。
如何在凸包中获得最远的点?
【问题讨论】:
标签: c# opencv image-processing computer-vision emgucv