我正在尝试创建一个对象跟踪器,我生成了过滤后的图像,该图像跟踪对象并将其转换为白色,我用它来获取过滤后的图像
CvInvoke.cvInRangeS(HSVimg, low, high, THImg);
现在我试图获得轮廓并获得中心点,所以我使用了它(无法测试它)
using (Image<Gray, Byte> canny = smoothedRedMask.Canny(100.0, 50.0))
using (MemStorage stor = new MemStorage())
{
Contour<Point> contours = canny.FindContours(
Emgu.CV.CvEnum.CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE,
Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_TREE,
stor);
}
所以我有两个问题canny方法有什么作用? 如何在被跟踪物体周围绘制一个形状,然后使用瞬间或任何其他方法获得中心点? 你不必编写代码只是给我参考我可以使用的简单代码
答案 0 :(得分:1)
Canny
函数是边缘检测算法的实现,它使用多阶段算法来检测图像中的各种边缘。
请参阅此wikipedia article或this tutorial/code以便更好地理解。
问题的另一部分有点棘手,因为在跟踪对象周围绘制一个形状将取决于应用精确边缘检测后接收到的图像的质量以及对象的几何形状。
因此,您可能需要调整canny函数的值以满足您的需求。
但您可以参考这些YouTube视频教程,以更好地理解/编码您的对象跟踪逻辑。
希望它有所帮助。