使用OpenCV中cvFindContour函数检测轮廓的心得

来源:互联网 发布:手机电脑桌面软件2016 编辑:程序博客网 时间:2024/06/05 11:32


      在使用OpenCV的cvFindContour检测轮廓之前一般首先要对图像进行二值化处理,cvFindContour函数原型为int

cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour, int header_size=sizeof(CvContour),

int mode=CV_RETR_LIST, int method=CV_CHAIN_APPROX_SIMPLE, CvPoint offset=cvPoint(0,0) );二值化处理函

数cvThreshold(g_pGrayImage, pBinaryImage, 100, 255, CV_THRESH_BINARY_INV),有时在用

mode=CV_RETR_EXTERNAL寻找最外层轮廓时会出现找到的最外层轮廓是画布的轮廓,这时需要调整cvThreshold的

最后一个参数,即把CV_THRESH_BINARY_INV 改为CV_THRESH_BINARY 或者把CV_THRESH_BINARY 改为

CV_THRESH_BINARY_INV,这是因为cvFindContour是从黑色背景中寻找白色轮廓。
 

     另外,int cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour, int header_size=sizeof

(CvContour), int mode=CV_RETR_LIST, int method=CV_CHAIN_APPROX_SIMPLE, CvPoint offset=cvPoint(0,0) );中

的最后一个参数offset并不是很常用,但是如果要对ROI区域进行查找轮廓的操作时,需要使用这个参数,此时该参数

应设置为cvPoint(rect.x,rect.y),其中rect.x和rect.y分别代表ROI区域最左上边x和y坐标的值。

1 0