文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

OpenCV连通域数量统计实例分析

2023-07-02 00:26

关注

本文小编为大家详细介绍“OpenCV连通域数量统计实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“OpenCV连通域数量统计实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

核心代码

int connectionDetect(Mat &src, Mat &dst, vector<Feather> &featherList){int rows = src.rows;int cols = src.cols;int labelValue = 0;Point seed, neighbor;stack<Point> pointStack;// 用于计算连通域的面积int area = 0;         // 连通域的左边界,即外接最小矩形的左边框,横坐标值,依此类推int leftBoundary = 0;       int rightBoundary = 0;int topBoundary = 0;int bottomBoundary = 0;// 外接矩形框Rect box;                   Feather feather;vector<stack<Point>> points;featherList.clear();dst.release();dst = src.clone();for (int i = 0; i < rows; i++){uchar *pRow = dst.ptr<uchar>(i);for (int j = 0; j < cols; j++){if (pRow[j] == 255){area = 0;// labelValue最大为254,最小为1.labelValue++;       // Point(横坐标,纵坐标)seed = Point(j, i);     dst.at<uchar>(seed) = labelValue;pointStack.push(seed);area++;leftBoundary = seed.x;rightBoundary = seed.x;topBoundary = seed.y;bottomBoundary = seed.y;while (!pointStack.empty()){neighbor = Point(seed.x + 1, seed.y);if ((seed.x != (cols - 1)) && (dst.at<uchar>(neighbor) == 255)){dst.at<uchar>(neighbor) = labelValue;pointStack.push(neighbor);area++;if (rightBoundary < neighbor.x)rightBoundary = neighbor.x;}neighbor = Point(seed.x, seed.y + 1);if ((seed.y != (rows - 1)) && (dst.at<uchar>(neighbor) == 255)){dst.at<uchar>(neighbor) = labelValue;pointStack.push(neighbor);area++;if (bottomBoundary < neighbor.y)bottomBoundary = neighbor.y;}neighbor = Point(seed.x - 1, seed.y);if ((seed.x != 0) && (dst.at<uchar>(neighbor) == 255)){dst.at<uchar>(neighbor) = labelValue;pointStack.push(neighbor);area++;if (leftBoundary > neighbor.x)leftBoundary = neighbor.x;}neighbor = Point(seed.x, seed.y - 1);if ((seed.y != 0) && (dst.at<uchar>(neighbor) == 255)){dst.at<uchar>(neighbor) = labelValue;pointStack.push(neighbor);area++;if (topBoundary > neighbor.y)topBoundary = neighbor.y;}seed = pointStack.top();pointStack.pop();}box = Rect(leftBoundary, topBoundary, rightBoundary - leftBoundary, bottomBoundary - topBoundary);feather.area = area;feather.boundingbox = box;feather.label = labelValue;featherList.push_back(feather);}}}return labelValue;}

 代码执行说明

<font color=#999AAA >在此不进行实例演示

输入图像为分割后图像

执行结果可根据featherList信息自行绘制矩形框

<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">

读到这里,这篇“OpenCV连通域数量统计实例分析”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯