当前位置: 首页 > wzjs >正文

一流的做pc端网站中国网络营销公司

一流的做pc端网站,中国网络营销公司,wordpress 茶叶模板,查国外网站备案/** * 从二值图像中识别黑色矩形并统计数量 * param binaryImage 输入的二值图像(黑色区域为前景,白色为背景) * param minArea 最小轮廓面积阈值,用于过滤噪声 * param outputImage 可选输出图像,用于可视化检测结…

/**
 * 从二值图像中识别黑色矩形并统计数量
 * @param binaryImage 输入的二值图像(黑色区域为前景,白色为背景)
 * @param minArea 最小轮廓面积阈值,用于过滤噪声
 * @param outputImage 可选输出图像,用于可视化检测结果
 * @return 当检测到的矩形数量 > 3 时返回true,否则返回false
 */
bool detectBlackRectangles(const cv::Mat& binaryImage, double minArea = 500, cv::Mat* outputImage = nullptr) {
    // 确保输入图像是二值图像
    CV_Assert(binaryImage.type() == CV_8UC1);
    
    // 复制输入图像用于处理
    cv::Mat processedImage = binaryImage.clone();
    
    // 形态学操作:开运算和闭运算,去除噪声并填充轮廓
    cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5, 5));
    cv::morphologyEx(processedImage, processedImage, cv::MORPH_OPEN, kernel);
    cv::morphologyEx(processedImage, processedImage, cv::MORPH_CLOSE, kernel);
    
    // 查找轮廓
    std::vector<std::vector<cv::Point>> contours;
    std::vector<cv::Vec4i> hierarchy;
    cv::findContours(processedImage, contours, hierarchy, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);
    
    // 过滤轮廓并统计符合条件的矩形数量
    int validContourCount = 0;
    
    // 如果需要输出图像,创建彩色副本
    cv::Mat colorOutput;
    if (outputImage != nullptr) {
        cv::cvtColor(binaryImage, colorOutput, cv::COLOR_GRAY2BGR);
    }
    
    for (size_t i = 0; i < contours.size(); i++) {
        // 计算轮廓面积,过滤小面积噪声
        double area = cv::contourArea(contours[i]);
        if (area < minArea) continue;
        
        // 近似轮廓为多边形
        std::vector<cv::Point> approx;
        cv::approxPolyDP(contours[i], approx, 0.02 * cv::arcLength(contours[i], true), true);
        
        // 检查是否为矩形(3-6个顶点,不严格要求)
        if (approx.size() >= 3 && approx.size() <= 6) {
            validContourCount++;
            
            // 如果需要,绘制轮廓和边界框
            if (outputImage != nullptr) {
                cv::drawContours(colorOutput, contours, i, cv::Scalar(0, 255, 0), 2);
                cv::Rect rect = cv::boundingRect(contours[i]);
                cv::rectangle(colorOutput, rect, cv::Scalar(0, 0, 255), 2);
            }
        }
    }
    
    // 如果需要,设置输出图像
    if (outputImage != nullptr) {
        *outputImage = colorOutput;
    }
    
    // 返回标志位:轮廓数量是否大于3
    return (validContourCount > 3);
}

http://www.dtcms.com/wzjs/200685.html

相关文章:

  • dz论坛网站源码百度查询关键词排名工具
  • 佛山网站制作网址赚钱平台
  • 杭州小型网站建设服务潍坊网站seo
  • 外贸企业网站推广公司自助建站网站哪个好
  • 普通网站一年要多少钱外链发布软件
  • 南通网站建设公司2022拉新推广赚钱的app
  • 制作网站的图片素材上海搜索优化推广
  • 做网站关键词申请网站怎么申请
  • 二手交易网网站建设目标深圳网站推广
  • 中国建设局网站招聘360开户
  • 网站改版做301是啥意思 换域名环球网今日疫情消息
  • 网站顶部设计百度账号登录官网
  • 用win2003做网站拉新app推广平台排名
  • 专线可以做网站做app软件大概多少钱
  • 2016年网站建设总结关键词优化哪个好
  • 做网站全程指导武汉楼市最新消息
  • 购物网站建设app开发免费的推广引流软件
  • 自己做的网站根目录哪里找到微博搜索引擎优化
  • 杭州如何做百度的网站推广小说百度风云榜
  • 山东招聘网站建设网络整合营销案例
  • 九江建网站的公司seo的工作内容
  • 做装修业务呢有多少网站天津网站策划
  • title (网站建设)济南seo优化外包
  • 网站建设及维护推广合同免费b站软件推广网站
  • 常州专业网站建设班级优化大师功能介绍
  • 网站排名 优帮云网站权重如何查询
  • 网站开发 jsp加密app推广引流方法
  • 做论坛app网站徐州百度推广公司
  • 网站 关键词库 怎么做发稿媒体平台
  • wordpress安装网页太简单了长沙seo研究中心