首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenCV --一张照片里有多少个黑色物体?

OpenCV --一张照片里有多少个黑色物体?
EN

Stack Overflow用户
提问于 2017-05-10 11:30:48
回答 1查看 1.2K关注 0票数 1

好的,我尝试用openCV和c++,我想做一个简单的检测程序,对象是黑色的。所以我有一个简单的代码:

代码语言:javascript
运行
复制
int main()
{
    Mat3b bgr = imread("C:/Users/sesoa/Desktop/photos/shapes.png");

    Mat3b hsv;
    cvtColor(bgr, hsv, COLOR_BGR2HSV);

    Mat1b mask1, mask2;
    inRange(hsv, Scalar(0, 0, 0, 0), Scalar(180, 255, 30, 0), mask1);
    inRange(hsv, Scalar(0, 0, 0, 0), Scalar(180, 255, 40, 0), mask2);



    Mat1b mask = mask1 | mask2;

    imshow("Mask", mask);
    waitKey();

    return 0;
}

shapes.png是这样:

所有的形状都是黑色的圆形。我想让我的程序告诉我有多少连接的黑色物体在那里。此外,形状下的文字也是黑色的。所以它也给我看了这个,没关系,因为这是一张测试照片。

如何修改我的程序以检测照片中有多少连接的黑色物体?(在这张照片中,输出应该是"60“,因为有8个物体,49个字母+3个字母是'i‘,所以我们必须数点。)

编辑:

我要程序计数黑色物体。我已经把所有的黑色物体都拿出来了:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-10 13:40:07

如果要计算对象的数量,只需执行以下操作:

代码语言:javascript
运行
复制
std::vector<std::vector<cv::Point> > contours; 
std::vector<cv::Vec4i> hierarchy;
findContours( canny_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) ); // canny_output is the binary image

这将给出二进制图像中的所有轮廓(contours.size())。如果你只想要特定的轮廓,你可以过滤等高线区域。

希望能帮上忙!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43891222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档