C#中cvFindContours与cvDrawContours使用方法

       cvFindContours可以从二值图像中检索轮廓,并返回检测到的轮廓的个数,cvDrawContours则可用于绘制cvFindContours函数所找到的轮廓。这两个函数均为OPENCV图像处理库中的函数,我们在C#中要借助于EMGU,通过CvInvoke来调用这两个函数。斗胆借用人气王—-挖掘机的肖像来演示这两个函数的效果,见下图。


     这两个函数的在C#中的用法大家可以参考后面的代码,各参数的意义大家百度一下就能找到,要想理解更深刻,还是要自己去尝试更改每个参数的值,去观察最终的效果。我这里记录一下我在使用这两个函数时的遇到的难点,目前我暂时只知道怎样做是正确的,还不知道为什么这样做是正确的,还希望后面能理解,若有高手愿意指点一二,那更是感激不尽:

      1. cvFindContours的输入必须是二值化图像,应此源图像必须经过cvThreshold或者cvCanny或者其他的二值化方法处理;

      2. cvFindContours的第4个参数即(int headerSize),EMGU官网中的说明是这样的:

Size of the sequence header, >=sizeof(CvChain) if method=CV_CHAIN_CODE, and >=sizeof(CvContour) otherwise

         但实际上,EMGU中没有CvContour这样的东东,只有MCvContour,但直接使用sizeof(MCvContour) 是不行的,用如下方式才可以:

      代码如下:

Comments

  1. 回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Fork me on GitHub