【OpenCV】轮廓提取——findContours()

       轮廓是图像的重要特征之一,有些时候,很容易将其和边缘混淆。因此查阅了关于轮廓和边缘的词条,以此加深对轮廓和边缘这两个概念的认识和理解。边缘是图像差异变化比较显著的地方,而轮廓则是构成图形和物体的边缘线条,属于边缘的一部分。对于形状单一的二值图像而言,物体轮廓和边缘是重合的。在OpenCV中,我们可以通过findContours函数提取图像的轮廓信息。

#include
#include
#include
#includeusing namespace cv;
using namespace std;int main(int argv, char** argc)
{Mat src;src = imread("D://opencv//5.PNG");if (!src.data){cout << "Could not loaded image..." << endl;return -1;}// convert binary imageMat grayImg, binImg;cvtColor(src, grayImg, COLOR_BGR2GRAY);threshold(grayImg, binImg, 100, 255, THRESH_BINARY | THRESH_OTSU);        //图像二值化// find contoursvector> contours;vector hierarchy;findContours(binImg, contours, hierarchy, RETR_LIST, CHAIN_APPROX_SIMPLE); //提取轮廓// draw find result                                                 for (size_t i = 0; i < contours.size(); i++){//绘制第i条轮廓drawContours(src, contours, (int)i, Scalar(0, 0, 255), 1, 8, hierarchy, 0);       }// show find resultnamedWindow("Find Result", WINDOW_AUTOSIZE);imshow("Find Result", src);waitKey(0);return 0;
}

结果如下:

 

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部