当前位置: 首页 > news >正文

opencv c++取mask的最大连通域

方法1

cv::Mat backMask2;
cv::Mat stats2;
cv::Mat centroids2;
cv::connectedComponentsWithStats(backMask, backMask2, stats2, centroids2, 8, CV_32S);
int maxArea = 0;
int maxIndex = 0;
for (int i = 1; i < stats2.rows; ++i)
{int area = stats2.at<int>(i, cv::CC_STAT_AREA);if (area > maxArea){maxArea = area;maxIndex = i;}
}
backMask = backMask2 == maxIndex;
cv::imshow("backMask2", backMask);
cv::waitKey();

方法2

bool cvGetMaxConnectedComponents(const cv::Mat& input_img, cv::Mat& out_img)
{cv::Mat temp;cv::Mat labels;input_img.copyTo(temp);//1. 标记连通域int n_comps = connectedComponents(temp, labels, 4, CV_16U);std::vector<int> histogram_of_labels;for (int i = 0; i < n_comps; i++)//初始化labels的个数为0{histogram_of_labels.push_back(0);}int rows = labels.rows;int cols = labels.cols;for (int row = 0; row < rows; row++) //计算每个labels的个数{for (int col = 0; col < cols; col++){histogram_of_labels.at(labels.at<unsigned short>(row, col)) += 1;}}histogram_of_labels.at(0) = 0; //将背景的labels个数设置为0//2. 计算最大的连通域labels索引int maximum = 0;int max_idx = 0;for (int i = 0; i < n_comps; i++){if (histogram_of_labels.at(i) > maximum){maximum = histogram_of_labels.at(i);max_idx = i;}}//3. 将最大连通域标记为1for (int row = 0; row < rows; row++){for (int col = 0; col < cols; col++){if (labels.at<unsigned short>(row, col) == max_idx){labels.at<unsigned short>(row, col) = 255;}else{labels.at<unsigned short>(row, col) = 0;}}}//4. 将图像更改为CV_8U格式labels.convertTo(out_img, CV_8U);return true;
}

http://www.mrgr.cn/news/53093.html

相关文章:

  • 图像识别技术的多领域应用:从医疗到安防
  • sql 32位长id 唯一
  • AI 工具大赏:探索智能时代的得力助手
  • Python将Excel文件转换为JSON格式
  • 闲谈【空仓及仓位管理】的重要性
  • 单步预测-风速预测模型代码全家桶
  • 哪家云电脑便宜又好用?ToDesk云电脑、顺网云、达龙云全方位评测
  • Windows安装Minio服务器端
  • Docker安装Minio+SpringBoot上传下载文件
  • Ubuntu 22.04上安装Miniconda
  • opengl课前要点梳理
  • DS链式二叉树的基本操作和OJ题(12)
  • 深入探讨ASP.NET Core中间件及其请求处理管道特性
  • 高校企业数据可视化平台功能介绍/特色功能
  • ruoyi框架配置多数据源
  • RK平台 GPIO序号转换软件
  • 基于SpringBoot+Vue+uniapp微信小程序的宿舍报修系统的详细设计和实现
  • 【PCB】ADAS
  • 乐观锁和悲观锁详解
  • 华为HCIE-Security认证考试流程、考试内容