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

news/2024/11/18 10:43:12/

OPENCV中最常用的边界检测是CANNY函数
下面展示它的用法

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

下面是程序的执行效果,可以看出,随着下门槛的提高,边界越来越少
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4fba52e43827406f884567aeaa725664.pn

可见
1,随着下阈值的提高,强边缘被筛选出来
2,随着下阈值的提高,边缘信息越来越少

下面我们修改上阈值看看

  cv::Canny(gray, edges[i], i * 100, 150*i, 3);

0号图片是上门槛为0 的情况,所以噪音很多,上门槛不是越高越好,可见2,3,4几乎没有信息可言
在这里插入图片描述
就这样。ψ(`∇´)ψ


http://www.ppmy.cn/news/1547962.html

相关文章

【软件测试】设计测试用例的万能公式

文章目录 概念设计测试用例的万能公式常规思考逆向思维发散性思维万能公式水杯测试弱网测试如何进行弱网测试 安装卸载测试 概念 什么是测试用例&#xff1f; 测试⽤例&#xff08;Test Case&#xff09;是为了实施测试⽽向被测试的系统提供的⼀组集合&#xff0c;这组集合包…

[SWPUCTF 2021 新生赛]whitegive_pwn

ret2libc 获取puts函数的PLT&#xff08;过程链接表&#xff09;地址、GOT&#xff08;全局偏移表&#xff09;地址和_start符号的地址。 pop_rdi 0x400763&#xff1a;这是pop rdi; ret指令的地址&#xff0c;用于控制rdi寄存器的值&#xff0c;以便调用puts函数。 payload1 …

LabVIEW弧焊参数测控系统

在现代制造业中&#xff0c;焊接技术作为关键的生产工艺之一&#xff0c;其质量直接影响到最终产品的性能与稳定性。焊接过程中&#xff0c;电流、电压等焊接参数的精确控制是保证焊接质量的核心。基于LabVIEW开发的弧焊参数测控系统&#xff0c;通过实时监控和控制焊接过程中关…

IntelliJ IDEA 2023.2x——图文配置

IntelliJ IDEA 2023.2——配置说明 界面如下图所示 : 绿泡泡查找 “码猿趣事” 查找【idea99】 IntelliJ IDEA 的官方下载地址 IntelliJ IDEA 官网下载地址 一路上NEXT 到结尾&#xff1a; 继续NEXT 下一步:

IL-AD

IL-AD 我们利用机器学习方法来适应纳米孔测序基对齐器,用于核苷酸修饰检测。我们首先应用增量学习技术来改进富含修饰的序列的基对齐,这些序列通常具有高度的生物学兴趣。在解析序列主干后,我们进一步对单个核苷酸进行异常检测,以确定其修饰状态。通过这种方式,我们的管道…

权限系统:权限应用服务设计

今天聊聊权限系统的应用服务设计。 从业务需求的角度来看&#xff0c;权限系统需要解决两个核心问题&#xff1a; 1、菜单渲染与动态展示 当用户成功登录并接入系统后&#xff0c;系统需要动态获取并展示该用户有权限访问的菜单项。 这一过程涉及前端系统与权限系统的交互。前端…

微信小程序进行md5加密 ,base64 转码

封装一个Md5加密的工具 &#xff1a; utils /md5.js function md5(string) { function md5_RotateLeft(lValue, iShiftBits) { return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits)); } function md5_AddUnsigned(lX, lY) { var lX4, lY4, l…

使用shell自动化部署网站脚本

[rootserver ~]# ls / afs boot etc lib lostfound mnt proc run srv test usr bin dev home lib64 media opt root sbin sys tmp var[rootserver ~]# vim test.sh #!/bin/bash#使用nginx搭建test网站num$(ps -ef | grep nginx | grep -v grep …