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

使用c++视觉处理----canny 边缘检测、sobel边缘检测、scharr 滤波边缘检测

使用c++视觉处理canny 边缘检测、sobel边缘检测、scharr 滤波边缘检测

#include <opencv2/opencv.hpp>int main() {// 读取图像cv::Mat image = cv::imread("1.jpg", cv::IMREAD_GRAYSCALE); // 转为灰度图像if (image.empty()) {std::cerr << "无法加载图像" << std::endl;return -1;}// 创建用于显示结果的窗口cv::namedWindow("边缘检测结果", cv::WINDOW_AUTOSIZE);// Canny边缘检测cv::Mat cannyEdges;cv::Canny(image, cannyEdges, 50, 150); // 50和150是低阈值和高阈值// Sobel边缘检测cv::Mat sobelX, sobelY;cv::Sobel(image, sobelX, CV_16S, 1, 0);cv::Sobel(image, sobelY, CV_16S, 0, 1);cv::Mat sobelEdges;cv::convertScaleAbs(sobelX, sobelX);cv::convertScaleAbs(sobelY, sobelY);cv::addWeighted(sobelX, 0.5, sobelY, 0.5, 0, sobelEdges);// Scharr滤波边缘检测cv::Mat scharrX, scharrY;cv::Scharr(image, scharrX, CV_16S, 1, 0);cv::Scharr(image, scharrY, CV_16S, 0, 1);cv::Mat scharrEdges;cv::convertScaleAbs(scharrX, scharrX);cv::convertScaleAbs(scharrY, scharrY);cv::addWeighted(scharrX, 0.5, scharrY, 0.5, 0, scharrEdges);// 显示结果cv::imshow("原始图像", image);cv::imshow("Canny边缘检测", cannyEdges);cv::imshow("Sobel边缘检测", sobelEdges);cv::imshow("Scharr边缘检测", scharrEdges);cv::waitKey(0);return 0;
}

在这里插入图片描述

调用本地相机实时检测:canny 边缘检测、sobel边缘检测、scharr 滤波边缘检测

#include <opencv2/opencv.hpp>int main() {cv::VideoCapture cap(0); // 打开本地相机(通常是0号摄像头)if (!cap.isOpened()) {std::cerr << "无法打开相机" << std::endl;return -1;}// 创建用于显示结果的窗口cv::namedWindow("实时边缘检测", cv::WINDOW_AUTOSIZE);while (true) {cv::Mat frame;cap >> frame; // 从相机捕获一帧图像if (frame.empty()) {std::cerr << "无法捕获图像" << std::endl;break;}// 转换为灰度图像cv::Mat grayImage;cv::cvtColor(frame, grayImage, cv::COLOR_BGR2GRAY);// Canny边缘检测cv::Mat cannyEdges;cv::Canny(grayImage, cannyEdges, 50, 150); // 50和150是低阈值和高阈值// Sobel边缘检测cv::Mat sobelX, sobelY;cv::Sobel(grayImage, sobelX, CV_16S, 1, 0);cv::Sobel(grayImage, sobelY, CV_16S, 0, 1);cv::Mat sobelEdges;cv::convertScaleAbs(sobelX, sobelX);cv::convertScaleAbs(sobelY, sobelY);cv::addWeighted(sobelX, 0.5, sobelY, 0.5, 0, sobelEdges);// Scharr滤波边缘检测cv::Mat scharrX, scharrY;cv::Scharr(grayImage, scharrX, CV_16S, 1, 0);cv::Scharr(grayImage, scharrY, CV_16S, 0, 1);cv::Mat scharrEdges;cv::convertScaleAbs(scharrX, scharrX);cv::convertScaleAbs(scharrY, scharrY);cv::addWeighted(scharrX, 0.5, scharrY, 0.5, 0, scharrEdges);// 显示实时边缘检测结果cv::imshow("原始图像", frame);cv::imshow("Canny边缘检测", cannyEdges);cv::imshow("Sobel边缘检测", sobelEdges);cv::imshow("Scharr边缘检测", scharrEdges);// 检查用户是否按下ESC键,然后退出循环if (cv::waitKey(1) == 27) {break;}}return 0;
}

相关文章:

使用c++视觉处理----canny 边缘检测、sobel边缘检测、scharr 滤波边缘检测

使用c视觉处理canny 边缘检测、sobel边缘检测、scharr 滤波边缘检测 #include <opencv2/opencv.hpp>int main() {// 读取图像cv::Mat image cv::imread("1.jpg", cv::IMREAD_GRAYSCALE); // 转为灰度图像if (image.empty()) {std::cerr << "无法加…...

gogs和drone如何配合使用

上篇介绍了drone和gogs安装方法&#xff0c;这次介绍这两个如何使用&#xff0c;此篇文章主要介绍在物理机上进行发布。 此处用到的java项目地址&#xff1a;https://gitee.com/huningfei/demo-test 一 配置gogs 1.1 在Gogs中配置指定仓库的”.drone.yml“文件 1.2 ssh-drone…...

Feign客户端的配置与使用

feign Feign的基本使用Feign客户端抽取 Feign的基本使用 Feign是一个声明式的Web服务客户端&#xff0c;它使得编写Web服务客户端变得更加简单。 1、首先&#xff0c;需要在项目中引入Feign的相关依赖。在Maven项目中&#xff0c;可以添加以下依赖&#xff1a; <dependen…...

【数据结构】队列(Queue)实现详解

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;数据结构 &#x1f525;该文章主要了解实现队列的相关操作。 目录&#xff1a; &#x1f30d; 队列&#x1f52d;概念&#x1f52d;结构&…...

23.10.13数据库升级流程记录

23.10.13数据库升级流程记录 hello&#xff0c;我是阿昌&#xff0c;今天记录一下数据库升级的流程&#xff0c;内容如下&#xff1a; 一、升级的内容 将之前的数据库升级为8.0版本&#xff0c;切只涉及一个分库&#xff1b; 二、升级的时机 涉及到数据库升级&#xff0c;…...

【three.js】结合vue进行开发第一个3d页面

一、创建vue项目 新建一个项目目录&#xff0c;在集成终端打开&#xff0c;输入 npm init vitelatest 回车后&#xff0c;依次输入项目名&#xff0c;选择vue和js开发 然后安装依赖并运行项目 二、安装three 接下来我们开始安装three npm install three 三、Three.js 的…...

【Vue】同一个页面多次复用同一个组件数据相互干扰问题

文章目录 问题描述解决方法 问题描述 第二个child会受到第一个child的影响而线上666的值 <template><child :value"666" /><child /> </template> <script> import child from ./child; export default {components: {child,},data(…...

【深度学习实验】卷积神经网络(八):使用深度残差神经网络ResNet完成图片多分类任务

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 构建数据集&#xff08;CIFAR10Dataset&#xff09; a. read_csv_labels&#xff08;&#xff09; b. CIFAR10Dataset 2. 构建模型&#xff08;FeedForward&#x…...

HarmonyOS学习 -- ArkTS开发语言入门

文章目录 一、编程语言介绍二、TypeScript基础类型1. 布尔值2. 数字3. 字符串4. 数组5. 元组6. 枚举7. unknown8. void9. null 和 undefined10. 联合类型 三、TypeScript基础知识条件语句if语句switch语句 函数定义有名函数和匿名函数可选参数剩余参数箭头函数 类1. 类的定义2.…...

早安心语|不委屈不将就,让生活充满仪式感

1、让自己的生活多一种可能&#xff0c;给自己的未来多一份惊喜&#xff0c;人生所有的机会和惊喜&#xff0c;都是在你全力以赴的道路上遇到的。 2、推开自己喜欢的人叫成长&#xff0c;留住自己喜欢的人叫本事&#xff0c;总有人嫌你不够好&#xff0c;也有人觉得你哪都好&am…...

[Python进阶] 操纵键盘:pyuserinput

6.3 操纵键盘&#xff1a;pyuserinput 6.3.1 说明 在安装pyuserinput库时会自动安装PyMouse和PyKeyboard库。前者主要用来操作鼠标&#xff0c;包括鼠标的点击、移动等。后者主要用来操作键盘&#xff0c;包括键盘按键的按下、弹起等。这两个库还可以同时对鼠标和键盘的事件进…...

解析Moonbeam的安全性、互操作性和市场竞争力

Moonbeam依托Polkadot Substrate框架构建&#xff0c;用Rust程序设计语言创建的智能合约区块链平台&#xff0c;在继承Polkadot安全性的基础上为项目提供以太坊虚拟机&#xff08;EVM&#xff09;的兼容性和原生的跨链互操作性优势。Moonbeam的EVM兼容性表示开发者无需学习Subs…...

RPA是什么?怎么成为RPA高手?

RPA&#xff08;Robotic Process Automation&#xff0c;机器人流程自动化&#xff09;是一种技术&#xff0c;通过软件机器人模拟人类在计算机上执行重复性任务&#xff0c;从而提高生产力、减少错误并降低成本。RPA 可以广泛应用于金融、医疗、制造、零售等多个行业&#xff…...

Apache Shiro 漏洞复现

文章目录 Apache Shiro 漏洞复现1. Apache Shiro 1.2.4 反序列化漏洞1.1 漏洞描述1.2 漏洞原理1.3 漏洞复现1.3.1 环境启动 1.4 漏洞利用1.5 修复方案 Apache Shiro 漏洞复现 链接地址&#xff1a;Vulhub - Docker-Compose file for vulnerability environment 1. Apache Shi…...

炒现货白银的最佳时间

天时地利人和是我们进行现货白银投资最关键的因素。天时是指我们因时而动&#xff0c;在适合的时机出击。地利&#xff0c;就是我们对市场的定位&#xff0c;对自己入场的定位有清晰的了解&#xff0c;并且这些位置对我们有利。人和就是指投资者的状态很好&#xff0c;对如何进…...

C# OpenVINO 人脸识别

效果 耗时 Preprocess: 1.41ms Infer: 4.38ms Postprocess: 0.03ms Total: 5.82ms 项目 代码 using OpenCvSharp; using Sdcb.OpenVINO; using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.Text; using Syste…...

ESP32-WROOM-32无法进入下载模式进行程序上传的问题

结论 先说结论&#xff0c;ESP32-WROOM-32无法进入下载模式通过串口进行程序上传&#xff0c;可能是GPIO2引脚没有通过下拉电阻拉低&#xff0c;导致无法进入正确的启动模式。 启动模式 ESP32启动时会打印rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) 复位源rs…...

尚硅谷Flink(一)

目录 ☄️前置工作 fenfa脚本 &#x1f30b;概述 ☄️Flink是什么 ☄️特点&#xff08;多nb&#xff09; ☄️应用场景&#xff08;不用看&#xff09; ☄️分层API &#x1f30b;配环境 ☄️wordcount ☄️WcDemoUnboundStreaming &#x1f30b;集群部署 ☄️集…...

C++ 设计模式 —— 桥接模式

C 设计模式 —— 桥接模式 0. 引用连接 本文主要的思路和代码&#xff0c;来自于对以下连接的学习和实现&#xff1a; 桥接模式 1. 引言 1.1 什么是桥接模式&#xff1f; 桥接模式的定义桥接模式的作用 桥接模式&#xff0c;顾名思义&#xff0c;就像是一座连接两岸的桥…...

微信怎么删除好友?非常简单,2个方法!

随着生活和工作的节奏加快&#xff0c;这也导致我们微信里的联系人变得越来越多。有时候&#xff0c;我们可能只是需要给对方转钱、发送照片或者是一些其他理由。 而这部分“好友”可能除了这次交流后再也没有别的联系了&#xff0c;那么这时候大家可能会想把他们删除。那么微…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...