OpenCV如何计算二进制对象的面积?

3

我正在使用OpenCV和C++。在二值化后,我得到了一张黑白图片。当我只有一个点的坐标(x,y)属于该对象时,我该如何计算该物体的面积?

3个回答

2
由于这是一个二进制图像,因此您可以轻松获取斑点。一旦获得了斑点,就可以轻松计算斑点面积。 您可以使用cvBlobsLib来获取斑点。OpenCV没有集成cvBlobsLib。您可以自己完成。但是OpenCV具有轮廓的功能。您可以使用findContours来获取斑点/轮廓,然后获取面积。 OpenCV - findContours

OpenCV-结构分析和形状描述

您将找到关于矩、hu矩、轮廓等的信息。使用矩,您可以创建自己的斑点,并帮助您获取斑点面积。

这里有一个使用OpenCV Python绑定的开源机器视觉框架-SimpleCV

他们使用轮廓和矩实现了完整的 Blob 功能。你可以看一下。 Blob BlobMaker 它是用 Python 编写的,但你可以将其移植到 C++ 并使用 blobs。

1

0
你需要编写一种区域生长算法,从起始点开始,逐步添加相邻的相同颜色像素。
一种懒惰(但速度较慢)的方法是使用cv::floodFill函数,将形状中的像素设置为特定颜色,然后计算图像中具有此特定颜色的像素数量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接