c++图像的边缘检测

图像的边缘检测

cv::Canny 是 OpenCV 中用于进行边缘检测的函数,特别是用于检测图像中的边缘。Canny 边缘检测是一种广泛使用的技术,它能够识别图像中的边缘,这些边缘通常表示对象之间的边界或图像中的显著特征

void cv::Canny(const cv::Mat& image, cv::Mat& edges, double threshold1, double threshold2, int apertureSize = 3, bool L2gradient = false);参数说明:image:输入图像,需要进行边缘检测的图像,通常是灰度图像。edges:输出图像,用于存储检测到的边缘。threshold1:第一个阈值,用于边缘检测的强度梯度。threshold2:第二个阈值,用于连接边缘的弱边缘梯度。apertureSize:(可选)Sobel 算子的核大小,默认为3。L2gradient:(可选)一个布尔值,指定是否使用更精确但计算量更大的 L2 范数来计算梯度幅度,默认为false,通常使用 L1 范数。
图像边缘检测案例
#include <opencv2/opencv.hpp>
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>using namespace std;
using namespace cv;
#include <iostream>
#include <fstream>#include <opencv2/opencv.hpp>int main() {// 读取图像cv::Mat inputImage = cv::imread("1.png", cv::IMREAD_GRAYSCALE);//先把图像改成灰色图才能进行边缘的处理// 检查图像是否成功加载if (inputImage.empty()) {std::cerr << "无法加载图像" << std::endl;return -1;}// 创建一个输出图像cv::Mat edges;// 使用Canny边缘检测double lowThreshold = 50; // 低阈值double highThreshold = 150; // 高阈值int apertureSize = 3; // Sobel算子内核大小cv::Canny(inputImage, edges, lowThreshold, highThreshold, apertureSize);//// 显示原始图像和边缘检测结果cv::imshow("原始图像", inputImage);cv::imshow("边缘检测结果", edges);// 等待用户按下键盘任意键后关闭窗口cv::waitKey(0);return 0;
}

在这里插入图片描述

使用3×3的内核进行降噪再进行边缘检测案例

#include <opencv2/opencv.hpp>
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>using namespace std;
using namespace cv;
#include <iostream>
#include <fstream>
using namespace cv; //包含cv命名空间
int main() {// 读取图像cv::Mat srcImage = cv::imread("1.jpg");//先把图像改成灰色图才能进行边缘的处理imshow("【原始图】Canny边缘检测", srcImage);Mat dstImage, edge, grayImage; //参数定义//【1】创建与 src同类型和大小的矩阵(dst)dstImage.create(srcImage.size(), srcImage.type());//【2】将原图像转换为灰度图像//此句代码的OpenCV2版为://cvtColor( srcImage, grayImage, CV_BGR2GRAY )//此句代码的 OpenCV3版为:cvtColor(srcImage, grayImage, COLOR_BGR2GRAY);//【3】先使用 3×3内核来降噪blur(grayImage, edge, Size(3, 3));//【4】运行Canny算子Canny(edge, edge, 3, 9, 3);//【5】显示效果图imshow("【效果图】Canny边缘检测", edge);waitKey(0);return 0;
}

在这里插入图片描述

打开摄像头进行边缘检测

#include <opencv2/opencv.hpp>
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>using namespace std;
using namespace cv;int main()
{//从摄像头读入视频VideoCapture capture(0);Mat edges;//循环显示每一帧while (1){//【1】读入图像Mat frame;//定义一个 Mat变量,用于存储每一帧的图像capture >> frame; //读取当前帧//【2】将原图像转换为灰度图像cvtColor(frame, edges, CV_BGR2GRAY);//转化 BGR彩色图为灰度图//【3】使用 3x3内核来降噪(2x3+1=7)blur(edges, edges, Size(7, 7));//进行模糊//【4】进行canny边缘检测并显示Canny(edges, edges, 0, 30, 3);imshow("被 canny后的视频", edges);//显示经过处理后的当前帧if (waitKey(30) >= 0) break;//延时30ms}return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/142535.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【lesson7】git的介绍及使用

文章目录 什么是gitgit的历史git使用在gitee上创建仓库git clone HTTPS地址git add .git add 文件名git commit “日志”git pushgit loggit rm 文件名git statusgit pull 什么是git git是版本控制器&#xff0c;那么什么是版本控制器呢&#xff1f; 下面讲个故事为大家讲解一…

运算放大器(四):输入偏置电流

一、定义 运放输入级一般由 或 MOSFET 构成&#xff0c;理想情况下&#xff0c;运放的输入端没有电流流入。实际上为保证放大器工作在线性范围&#xff0c;运放的输入端一般设计成基极&#xff08;栅极&#xff09;开路&#xff0c;由外电路提供电流的方式&#xff0c;所以需要…

c++-string

文章目录 前言一、STL库介绍二、标准库中的string类1、string类介绍2、string类使用3.1 string类的构造函数3.2 string类对象的容量操作3.3 string类对象的遍历操作3.4 string类对象的访问操作3.5 string类对象的修改操作3.6 string类对象的字符串操作 三、模拟实现string类四、…

Prettier - Code formatter格式化规则文件

文章目录 前言安装使用 前言 先前公司在规范代码时,由于个人业务繁忙跟技术总监是后端出身用的IDEA不熟悉vsCode;以及大多数时都自己一个人负责一个项目,当时并不看重这些;最近在整理vue3tsvite的脚手架模板(平时工作用的react),开始整理格式化代码,方便之后 vue 和 react 中应…

element plus table 拖拽

element plus table 拖拽 sortablejs package.json "sortable.js": "^0.3.0","sortablejs": "^1.14.0", "vuedraggable": "^2.24.3",我的table 是在 el-dialog 里面的 在开发过程中出现过两个问题 1.进入加载 …

【力扣2154】将找到的值乘以 2

&#x1f451;专栏内容&#xff1a;力扣刷题⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、题目描述二、题目分析 一、题目描述 题目链接&#xff1a;将找到的值乘以 2 给你一个整数数组 nums &#xff0c;另给…

百度实习一面(知识图谱部门)

百度面经&#xff08;知识图谱部&#xff09;一面 1.自我介绍 介绍完了&#xff0c;打开共享&#xff0c;对着简历一点一点问 2.ffmpeg在项目中是怎么使用的 回答了ffmpeg在项目中使用的命令&#xff0c;用来干了什么 3.为什么使用toml配置&#xff0c;了解过yml配置吗&am…

Mock.js之Element-ui搭建首页导航与左侧菜单

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》《springMvc使用》 ⛺️ 生活的理想&#xff0c;为了不断更新自己 ! 1、Mock.js的使用 1.1.什么是Mock.js Mock.js是一个模拟数据的生成器&#xff0c;用来帮助前…

【前端面试题】2023年 国庆 前端面试真题之JS篇

人的一生&#xff0c;总是难免有浮沉。不会永远如旭日东升&#xff0c;也不会永远痛苦潦倒。反复地一浮一沉&#xff0c;对于一个人来说&#xff0c;正是磨练。因此&#xff0c;浮在上面的&#xff0c;不必骄傲&#xff1b;沉在底下的&#xff0c;更用不着悲观。必须以率直、谦…

Linux内核源码分析 (B.2)深入理解 Linux 物理内存管理

Linux内核源码分析 (B.2)深入理解 Linux 物理内存管理 文章目录 Linux内核源码分析 (B.2)深入理解 Linux 物理内存管理1. 前文回顾2. 从 CPU 角度看物理内存模型2.1 FLATMEM 平坦内存模型2.2 DISCONTIGMEM 非连续内存模型2.3 SPARSEMEM 稀疏内存模型2.3.1 物理内存热插拔 3. 从…

DM8归档管理

开启归档 归档的格式&#xff1a; ARCH_NAME_DB_MAGIC[SEQNO]_日期时间.log ARCH_NAME 是在 dmarch.ini中配置的 LOCAL/REMOTE 归档名称 DB_MAGIC 是生成日志的数据库魔数 SEQNO 代表DSC 节点号&#xff0c;日期时间是归档日志文件的创建时间。 eg&#xff1a;ARCHIVE_LOCAL1_…

解决kali beef启动失败问题及实战

文章目录 一、解决方法二、靶场实战应用1.首先打开dvwa这个靶场&#xff0c;设置难度为low2.打开xss-stored3.准备payload4.提交payload5.利用 一、解决方法 首先需卸载 ruby apt remove ruby 卸载 beef apt remove beef-xss 重新安装ruby apt-get install ruby apt-get insta…

Swift SwiftUI 修改 List 背景颜色

Preview: Code: .listRowBackground(Color(.yellow)).scrollContentBackground(.hidden) .background(.linearGradient(colors: [.white, .accentColor], startPoint: .top, endPoint: .bottom))喜欢或对你有帮助&#xff0c;点个赞吧&#xff0c;自己先点个嘿嘿。 有错误或者…

JVM高级性能调试

标准的JVM是配置为了高吞吐量&#xff0c;吞吐量是为了科学计算和后台运行使用&#xff0c;而互联网商业应用&#xff0c;更多是为追求更短的响应时间&#xff0c;更低的延迟Latency&#xff08;说白了就是更快速度&#xff09;&#xff0c;当用户打开网页没有快速响应&#xf…

Android StringFog 字符串自动加密

一、StringFog 作用 一款自动对dex/aar/jar文件中的字符串进行加密Android插件工具&#xff0c;正如名字所言&#xff0c;给字符串加上一层雾霭&#xff0c;使人难以窥视其真面目。可以用于增加反编译难度&#xff0c;防止字符串代码重复。 支持java/kotlin。支持app打包生成…

Labelme分割标注软件

Labelme分割标注软件 1、环境配置与安装1.1 创建conda虚拟环境(建议)1.2 安装Labelme 2、简单使用2.1 创建label标签文件2.2 启动labelme2.3 打开文件/文件夹2.4 设置保存结果路径2.5 标注目标2.6 保存json文件格式 3 格式转换3.1 转换语义分割标签3.2 转换实例分割标签 相关重…

从零开始之了解电机及其控制(1)磁场与磁力

&#xff08;链接&#xff1a;从零开始之电机FOC控制_foc电机_一只小白啊的博客-CSDN博客&#xff09;之后&#xff0c;总感觉整个流程都知道&#xff0c;但是深入到具体细节时&#xff0c;就不知所措&#xff0c;感觉啥也不懂一样。 那么为什么要用FOC控制无刷电机呢&#xff…

Unity下tga和png格式图片打包成AB包大小和加载速度测试

测试素材 测试素材&#xff0c;一张tga格式&#xff0c;一张png格式&#xff0c;他们的图像尺寸一样都是8K图。 两张图在AssetBundles里显示 Tga格式的图明显大很多&#xff0c;我们打包成ab包看看。 在PC 打包后看&#xff0c;明显大小一样&#xff0c;我们进行ab包加载&am…

虚拟地址到物理地址的映射(二)

虚拟内存到物理内存的推导 本文只介绍最普遍的64位地址&#xff0c;四级页表&#xff0c;每个页表4k的这种最基本最常见的情况。 linux内核将一个进程的内存映射表建立好之后&#xff0c;在该进程被调度运行的时候&#xff0c;会将PGD的物理地址放置到MMU的页表基地址寄存器中…

参与抖音官方活动:开启抖音小店的曝光与销售新机会

抖音官方活动是指由抖音平台官方组织或合作举办的各类促销活动、品牌推广活动等。参与抖音官方活动对于抖音小店来说&#xff0c;是一个重要的机会&#xff0c;可以帮助店铺获得更多的曝光和销售机会。下面四川不若与众将介绍抖音小店如何参与抖音官方活动的一般步骤和注意事项…