边缘提取函数 [OPENCV--2]

OPENCV中最常用的边界检测是CANNY函数

下面展示它的用法

  • 通常输入一个灰度图像(边界一般和颜色无关)这样也可以简化运算
  • cv::Canny(inmat , outmat , therhold1, therhold2 ) 第一个参数是输入的灰度图像,第二个是输出的图像
  • 这两个参数都是引用类型,很方便
  • 下面的两个是门槛,一个是低阈值门槛,一个是高阈值门槛,只有高于低阈值的才算边界,高于高阈值的算是强边界
  • 你说值怎么取?CV本来就是很唯心的学科,这些参数肯定要自己调试了,在不同的实用环境中值不一样
  • 一般来说,保证TH2是TH 1的两倍到三倍即可
cpp 复制代码
#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>

int main() {
    cv::utils::logging::setLogLevel(cv::utils::logging::LOG_LEVEL_ERROR);

    // 读取PNG图像
    cv::Mat image = cv::imread("PIC.jpg", cv::IMREAD_COLOR);
    if (image.empty()) {
        std::cerr << "无法读取图像文件" << std::endl;
        return -1;
    }

    // 转换为灰度图像
    cv::Mat gray;
    cv::cvtColor(image, gray, cv::COLOR_BGR2GRAY);

    // 初始化边缘图像向量
    std::vector<cv::Mat> edges(5);  // 初始化大小为5的向量

    for (int i = 0; i < 5; i++) {
        // 应用边缘检测(Canny)
        cv::Canny(gray, edges[i], i * 100, 150, 3);

        // 创建并调整窗口大小
        cv::namedWindow("edges" + std::to_string(i), cv::WINDOW_NORMAL);  // 使用WINDOW_NORMAL标志,允许调整窗口大小
        cv::resizeWindow("edges" + std::to_string(i), 800, 600);  // 调整窗口大小为800x600

        // 显示边缘图像
        cv::imshow("edges" + std::to_string(i), edges[i]);
    }

    cv::waitKey();

    return 0;
}

下面是程序的执行效果,可以看出,随着下门槛的提高,边界越来越少

可见

1,随着下阈值的提高,强边缘被筛选出来

2,随着下阈值的提高,边缘信息越来越少

下面我们修改上阈值看看

cpp 复制代码
  cv::Canny(gray, edges[i], i * 100, 150*i, 3);

0号图片是上门槛为0 的情况,所以噪音很多,上门槛不是越高越好,可见2,3,4几乎没有信息可言

就这样。ψ(`∇´)ψ

相关推荐
拜小白10 分钟前
【论文解读】《DeepPanoContext:用全局场景关系图 + 可微关系优做全景 3D 场景理解
深度学习·计算机视觉·全景图
剑雨巍巍14 分钟前
AI Agent面试之基础概念
人工智能
微帧Visionular16 分钟前
AI视频单帧清晰,播放时却闪烁,原因是什么?
人工智能·深度学习·音视频
武子康19 分钟前
MultiNet6 空闲崩溃:`EXCVADDR=0x8` 后又出现 `CORRUPT HEAP`
人工智能·后端·agent
云智慧AIOps社区27 分钟前
智能巡检机器人应用场景解析:机房巡检、园区安防、管廊巡视与展厅导览
人工智能·机器人·具身智能·智能巡检机器人·企业级智能巡检机器人·机房巡检机器人·导览机器人
EnCi Zheng30 分钟前
Agent 如何进行工具调用:从一次 Function Calling 到生产级工具编排的完整链路
大数据·人工智能·agent·ai编程·工具调用
赛博守夜人32 分钟前
AI安全攻防与治理之十四:AI 安全测试不能脱离传统安全,Web、API、移动端与模型攻击面的组合拳
前端·人工智能·安全
lovingsoft34 分钟前
AI 时代未来软件形态趋势:从固定功能应用,走向意图驱动、智能体原生的柔性系统-浅析
人工智能
GlobalInfo35 分钟前
重磅发布 | 2026年船体清洁机器人行业研究报告:市场规模、发展前景与十五五战略地图
大数据·人工智能·机器人
海宇服务39 分钟前
零信任架构实战:基于海宇全能小微企业报告构建自动化园区商户免押租赁资信核验网关
大数据·人工智能·架构·自动化