OPENCV contourArea 计算区域面积

dd985081749 2017-08-09 11:16:24

利用OPENCV 如何计算此图片中,用黑线画出来的区域面积;
我做了一左键点击事件,点一次,把点记录下来去用contourArea进行计算,但始终出现异常;
问题一、计算区域面积时,是否需要做其它操作?
问题二、我在黑线区域内又画了一个区域,如何是否可以一次性计算出大区域未被小区域圈进去的部分?
...全文
3625 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-08-11
  • 打赏
  • 举报
回复
引用 6 楼 dd985081749 的回复:
[quote=引用 5 楼 zhao4zhong1 的回复:] 外轮廓和中间的孔洞区别是构成轮廓的节点顺序是逆时针/顺时针。 或者反过来。
嗯,我就是想得出去掉内部孔,得到外问题区域[/quote] 参考OpenCV自带的例子: opencv\sources\samples\cpp\contours2.cpp
dd985081749 2017-08-11
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
外轮廓和中间的孔洞区别是构成轮廓的节点顺序是逆时针/顺时针。 或者反过来。
嗯,我就是想得出去掉内部孔,得到外问题区域
沐阳2100 2017-08-10
  • 打赏
  • 举报
回复
不知道你是怎么做的,不过contourArea是计算轮廓的面积的,你可能需要先找轮廓(轮廓是闭合的),单纯的点集可能计算不出来
赵4老师 2017-08-10
  • 打赏
  • 举报
回复
外轮廓和中间的孔洞区别是构成轮廓的节点顺序是逆时针/顺时针。 或者反过来。
dd985081749 2017-08-10
  • 打赏
  • 举报
回复
引用 2 楼 m0_37901643 的回复:
不知道你是怎么做的,不过contourArea是计算轮廓的面积的,你可能需要先找轮廓(轮廓是闭合的),单纯的点集可能计算不出来
三个点以上就是一个闭合区间。具体算法,当有重合区域的时候,做计算还是有一点问题。
dd985081749 2017-08-10
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
找到原因了,没有问题。第一个问题解决,第二个问题还没有解决。
赵4老师 2017-08-09
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
资源下载链接为: https://pan.quark.cn/s/9648a1f24758 在计算机视觉领域,OpenCV 是一个功能强大的开源计算机视觉库,广泛应用于图像处理和分析任务。当需要获取图像中特定区域面积时,通常需要经过图像分割、二值化和轮廓检测等关键步骤。OpenCV 提供了多种工具来实现这些功能,其中 OTSU 二值化方法是一种常用且有效的图像阈值处理技术,其目的是将图像转换为黑白两色,以便简化图像并突出关键特征。这与 Halcon 中的 binary_threshold 函数的功能相似,但 OpenCV 的实现方式更为灵活。 在 C++ 环境中,使用 OpenCV 实现这一任务的流程如下。首先,需要理解二值化的概念:它是将图像中的像素值划分为两个类别(通常是黑色和白色),从而突出目标区域OpenCV 的 cv::threshold 函数支持多种二值化方法,其中 THRESH_OTSU 参数实现了 OTSU 自适应二值化。OTSU 算法能够根据图像的灰度分布自动确定最佳阈值,无需人工干预。以下是一个使用 OTSU 二值化的 C++ 示例代码: 完成二值化后,下一步是通过 OpenCV 的 findContours 函数检测目标区域的轮廓。该函数可以从二值图像中提取所有轮廓,并返回轮廓的坐标信息。在调用时,RETR_EXTERNAL 参数用于提取最外层轮廓,而 CHAIN_APPROX_SIMPLE 用于简化轮廓数据,减少内存占用。为了计算特定区域面积,需要遍历轮廓数据,并对每个轮廓使用 contourArea 函数: 需要注意的是,contourArea 返回的是像素面积,若要将其转换为实际物理面积,需要结合图像的分辨率和单位进行换算。 与 Halcon 的 binary_threshold 函数相比,OpenCV 的 OTSU 二值化方法虽然简单高效,

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧