qq_31376709 2021-08-03 17:29 采纳率: 100%
浏览 145
已结题

opencv计数项目实现及步骤

img
您好,这个图片计数可以实现吗?有什么难点,大致什么思路,可以说一下嘛?

  • 写回答

2条回答 默认 最新

  • 王大师王文峰 企业官方账号 2021-08-03 17:59
    关注

    opencv计数项目实现代码

    #include<iostream>
    #include<opencv.hpp>
    using namespace std;
    using namespace cv;
     
    int main()
    {
        //加载图像
        Mat src = imread("4.jpg");
        if (src.empty())
        {
            cout << "no image!" << endl;
            return -1;
        }
        imshow("src", src);
        //二值化
        Mat gray, binary;
        cvtColor(src, gray, COLOR_BGR2GRAY);
        imshow("gray", gray);
        threshold(gray, binary, 0, 255, THRESH_TRIANGLE);
        imshow("binary", binary);
        //图像形态学操作
        Mat kern1 = getStructuringElement(MORPH_RECT, Size(5, 5), Point(-1,-1));
        morphologyEx(binary, binary, MORPH_DILATE, kern1,Point(-1,-1),3);
        imshow("dilate", binary);
        //距离变换
        Mat dist;
        bitwise_not(binary, binary);//将白色背景变黑
        imshow("not", binary);
        distanceTransform(binary, dist, DIST_L2, 3);
        normalize(dist, dist, 0.0, 1.0, NORM_MINMAX);
        dist.convertTo(dist, CV_8UC1);
        imshow("dist", dist);
        //阈值分割
        Mat img;
        //threshold(dist, img, 0, 255, THRESH_BINARY | THRESH_OTSU);
        adaptiveThreshold(dist, img, 255, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, 85, 0.0);
        imshow("img", img);
        //腐蚀操作
        morphologyEx(img, img, MORPH_DILATE, kern1, Point(-1,-1),1);
        imshow("dilate-img", img);
        //寻找连通域
        vector<vector<Point>>contours;
        findContours(img, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
        Mat mask = Mat::zeros(src.size(), CV_8UC3);
        for (size_t i = 0; i < contours.size(); i++)
        {
            drawContours(mask, contours, static_cast<int>(i), Scalar(0, 0, 255), -1, 8);
        }
        cout << "个数:" << contours.size() << endl;
        imshow("result", mask);
     
        waitKey(0);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月11日
  • 已采纳回答 8月3日
  • 创建了问题 8月3日

悬赏问题

  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题