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

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.xdnf.cn/news/15267.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【9688】基于springboot+vue的CSGO赛事管理系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取免费源码 项目描述 在世界范围内&#xff0c;CSGO赛事管理系统已经得到…

基于HTTP编写ping操作

基于HTTP编写ping操作 前言 在上一集我们就完成了创建MockServer的任务&#xff0c;那么我们就可以正式开始进行网络的通讯&#xff0c;那么我们今天就来基于HTTP来做一个客户端ping服务端的请求&#xff0c;服务端返回pong的响应。 需求分析 基于HTTP&#xff0c;实现ping…

数学几百年重大错误:将无穷多各异直线误为直线y=x

黄小宁 h定理&#xff1a;点集AB≌B的必要条件是A≌B。 证&#xff1a;若AB则A必可恒等变换地变为BA≌A&#xff0c;而恒等变换是保距变换。证毕。 直线Z&#xff1a;x-y0&#xff08;x的变域是x轴&#xff09;可放大&#xff08;拉伸&#xff09;变换为直线L&#xff08;不≌Z…

力扣 LeetCode 459. 重复的子字符串(Day4:字符串)

解题思路&#xff1a; KMP算法 len - next[len - 1]作为最小公共子串的长度 len % (len - next[len - 1]) 0检测能否构成重复串&#xff0c;能构成整数倍&#xff0c;代表可以构成 注意&#xff1a; i 从 j 的下一位开始&#xff0c;即 i 初始化为 1 next[len - 1]需要大…

【MMIN】缺失模态想象网络用于不确定缺失模态的情绪识别

代码地址&#xff1a;https://github.com/AIM3RUC/MMIN abstract&#xff1a; 在以往的研究中&#xff0c;多模态融合已被证明可以提高情绪识别的性能。然而&#xff0c;在实际应用中&#xff0c;我们经常会遇到模态丢失的问题&#xff0c;而哪些模态会丢失是不确定的。这使得…

STM32完全学习——系统时钟设置

一、时钟框图的解读 首先我们知道STM32在上电初始化之后使用的是内部的HSI未经过分频直接通过SW供给给系统时钟&#xff0c;由于内部HSI存在较大的误差&#xff0c;因此我们在系统完成上电初始化&#xff0c;之后需要将STM32的时钟切换到外部HSE作为系统时钟&#xff0c;那么我…

离散数学笔记

第 1 章 数理逻辑 1.1 命题 1.1.1 基本概念 非真即假的陈述句称作命题 作为命题的陈述句所表达的判断结果称作命题的真值 真值只取两个值&#xff1a;真&#xff08;1或T&#xff09;或假&#xff08;0或F&#xff09; 真值为真的命题称作真命题&#xff0c;真值为假的命…

华大严选生物基因科技有限公司:基因检测行业十佳优质品牌

在 DNA 基因检测领域&#xff0c;华大严选生物基因科技有限公司以其卓越的品质和专业的服务脱颖而出&#xff0c;荣获 DNA 基因检测行业十佳优质品牌。 华大严选拥有先进的技术和设备&#xff0c;确保检测结果的准确性和可靠性。其专业的团队由经验丰富的科学家和技术人员组成…

spring boot整合https协议

注意&#xff1a;此方式是跳过SSL认证的。 整体目录 1. 生成SSL证书 首先&#xff0c;使用keytool生成一个自签名证书。打开命令行工具并运行以下命令&#xff1a; keytool -genkeypair -alias myserver -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 365 这…

python3 pyinstaller编译相关 和 python2兼容的一些问题

一: python2 和 python3的兼容问题 如果本地同时安装了python2 和 python3, 且都配置了环境变量的情况下, 在命令行里如何区分呢? python2: py -2 python3: py -3如何区分python2的pip 与 python3 的pip呢 python2: pip install xxx python3: pip3 install xxx二: pyin…

互联网行业面对大数据时代新挑战如何实现数据高速传输

随着互联网技术的飞速发展&#xff0c;我们正处在一个数据量爆炸增长的时代。据IDC预测&#xff0c;到2024年&#xff0c;全球数据总量将飙升至159.2ZB&#xff0c;而到了2028年&#xff0c;这一数字更是将达到384.6ZB。这样的增长速度&#xff0c;无疑为互联网行业带来了巨大的…

Python自动化小技巧24——实现自动化输出模板表格报告

背景 很多人拿到数据excel文件&#xff0c;然后要写报告&#xff0c;做表格&#xff0c;要各种计算&#xff0c;各种排序&#xff0c;分组聚合&#xff0c;数据透视&#xff0c;然后合并单元格&#xff0c;添加边框&#xff0c;加粗&#xff0c;添加显示规则&#xff0c;添加数…

python爬虫获得店铺的所有商品

在编写Python爬虫以获取店铺的所有商品信息时&#xff0c;通常涉及到发送HTTP请求、解析响应内容以及处理API返回的数据。以下是一个详细的Python爬虫示例&#xff0c;用于获取店铺的商品信息。这个示例假设API返回的是JSON格式的数据&#xff0c;并且需要API密钥进行认证。 步…

单片机设计电流与温度监控python上位机监控平台设计

目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 电路图采用Altium Designer进行设计&#xff1a; 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 在现代工业自动化和智能设备管理中&#xff0c;对电流和温度的实时监控是…

HarmonyOS本地存储-Preferences(用户首选项)的使用

一&#xff0c;用户首选项简述 ohos.data.preferences (用户首选项) 用户首选项为应用提供Key-Value键值型的数据处理能力&#xff0c;支持应用持久化轻量级数据&#xff0c;并对其修改和查询。 数据存储形式为键值对&#xff0c;键的类型为字符串型&#xff0c;值的存储数据…

【springboot使用sqlite数据库】Java后台同时使用mysql、sqlite

环境&#xff1a;根据业务的需要&#xff0c;老版程序使用的数据库是sqlite&#xff0c;版本升级成前后台分离模式&#xff0c;因此需要兼容mysql与sqlite数据库同时使用。 pom.xml设置&#xff1a; application.yml文件配置&#xff1a; mapper.java文件&#xff1a; service.…

【IC每日一题:AXI4协议时序及Verilog示例】

IC每日一题&#xff1a;AXI4协议时序及Verilog示例 1 AXI4协议1.1 AXI4通道1.1.0 握手机制1.1.1 写操作1.1.2 读操作 1.2 握手相关时序1.2.1 握手防死锁 1.3 AXI传输时序1.3.0 Burst传输1.3.1 AXI_Lite Write 传输1.3.2 Read读传输1.3.3. 非对齐传输1.3.4 Outstanding传输1.3.5…

Linux操作系统 -----(4.用户账户及组账户管理)

目录 前言 本章学习目标 1.用户分类 2.用户账户文件 3.用户影子文件 4.用户账户管理命令 4.1.新增用户命令 4.2.修改密码命令 4.3.修改用户属性命令 4.4.删除用户命令 5.组用户管理 5.1.组账户分类 5.2.组账户管理文件 5.3.组账户管理命令 5.3.1.新建组命令 5.3…

JUC基础类-AbstractQueuedSynchronizer

AbstractQueuedSynchronizer 1、AbstractQueuedSynchronizer概述2、AbstractQueuedSynchronizer源码分析2.1 AQS源码2.2 Node类 如有侵权&#xff0c;请联系&#xff5e; 如有问题&#xff0c;也欢迎批评指正&#xff5e; 1、AbstractQueuedSynchronizer概述 AbstractQueuedSy…