求mat的连通域,并只显示最大轮廓的连通域
2016-05-10 10:09
155 查看
程序:
cv::namedWindow("result", 0);
cv::imshow("result", result);
cv::imwrite("result.jpg", result);
std::vector<std::vector<cv::Point>> contours;
vector<Vec4i> hierarchy;
cv::findContours(image_gray, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);// CV_RETR_EXTERNAL CV_RETR_CCOMP
cv::Mat result(image_gray.size(), CV_8U, cv::Scalar(0));
int index;
double area, maxArea(0);
for (int i = 0; i < contours.size(); i++)
{
area = contourArea(Mat(contours[i]));
if (area > maxArea)
{
maxArea = area;
index = i;
}
}
drawContours(result, contours, index, Scalar(255), 2);
std::cout << " Area " << area << std::endl;
cv::namedWindow("Contours", 0);
cv::imshow("Contours", result);
cv::namedWindow("result", 0);
cv::imshow("result", result);
cv::imwrite("result.jpg", result);
std::vector<std::vector<cv::Point>> contours;
vector<Vec4i> hierarchy;
cv::findContours(image_gray, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);// CV_RETR_EXTERNAL CV_RETR_CCOMP
cv::Mat result(image_gray.size(), CV_8U, cv::Scalar(0));
int index;
double area, maxArea(0);
for (int i = 0; i < contours.size(); i++)
{
area = contourArea(Mat(contours[i]));
if (area > maxArea)
{
maxArea = area;
index = i;
}
}
drawContours(result, contours, index, Scalar(255), 2);
std::cout << " Area " << area << std::endl;
cv::namedWindow("Contours", 0);
cv::imshow("Contours", result);
相关文章推荐
- openstack-Swift中ring的通俗理解
- setNeedsDisplay setNeedsLayout
- 取出字符串的最后一个字符
- AngularJS 的表单验证
- Halcon与opencv格式的转换
- 企业如何选择最佳的SSL
- 使用hibernate tools插件生成POJO
- 7.1.2 运行错误
- 简单内交联与外交联总结
- Android消息处理机制——Looper、Handler、Message 源码分析
- 安卓内存优化
- Android 定义全局 ToastUtils
- android应用中去掉标题栏的方法
- 让一个数组内的所有对象执行同一个方法
- 设置按钮的尺寸和图片的一样大
- VBA笔记:判断整数是否在取值范围内
- 手写连接池
- Asp.net中ListBox的用法!
- Android Touch的传递机制
- Html5——本地数据库