使用OpenCV查找二值图中最大连通区域
2014-10-19 22:31
411 查看
上一篇博文中介绍了matlab查找最大连通区域的方法,OpenCV函数中也有类似的函数与之对应,findCoutours。下面代码为使用示例:
cv::Mat bwImg; vector<vector<cv::Point>> contours ; // 二值化图像 cv::threshold(srcImg, bwImg, 0.0, 255.0, CV_THRESH_BINARY | CV_THRESH_OTSU); cv::imshow("binary image", bwImg); cv::waitKey(); // 查找轮廓,对应连通域 cv::findContours(bwImg,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE); // 寻找最大连通域 double maxArea = 0; vector<cv::Point> maxContour; for(size_t i = 0; i < contours.size(); i++) { double area = cv::contourArea(contours[i]); if (area > maxArea) { maxArea = area; maxContour = contours[i]; } } // 将轮廓转为矩形框 cv::Rect maxRect = cv::boundingRect(maxContour); // 显示连通域 cv::Mat result1, result2; bwImg.copyTo(result1); bwImg.copyTo(result2); for (size_t i = 0; i < contours.size(); i++) { cv::Rect r = cv::boundingRect(contours[i]); cv::rectangle(result1, r, cv::Scalar(255)); } cv::imshow("all regions", result1) ; cv::waitKey(); cv::rectangle(result2, maxRect, cv::Scalar(255)); cv::imshow("largest region", result2) ; cv::waitKey();
相关文章推荐
- OpenCV编程案例:使用轮廓函数检测连通区域
- 使用OpenCV查找二值图中最大连通区域
- OpenCV计算连通区域数目与最大连通区域并标示出
- OpenCV计算连通区域数目与最大连通区域并标示出
- OpenCV计算连通区域数目与最大连通区域并标示出
- OpenCV计算连通区域数目与最大连通区域并标示出
- OpenCV计算连通区域数目与最大连通区域并标示出
- OpenCV编程案例:使用轮廓函数检测连通区域
- OpenCV计算连通区域数目与最大连通区域并标示出
- OpenCV计算连通区域数目与最大连通区域并标示出
- 学习OpenCV——肤色检测:椭圆模型 (&最大连通区域)
- 使用opencv编写函数 删除二值图像中面积较小的连通区域
- opencv 图片最大连通区域识别
- OpenCV计算连通区域数目与最大连通区域并标示出
- 使用堆查找前K个最大值兼谈程序优化(上)
- OpenCV_连通区域分析(Connected Component Analysis-Labeling)
- Opencv2系列学习笔记10(提取连通区域轮廓)
- 如何不使用比较和判断查找最大值
- OpenCV使用的一些经验总结,寻找最大轮廓、旋转
- OpenCV_连通区域分析(Connected Component Analysis/Labeling)