opencv3/C++图像边缘提取canny算子与Sobel算子实现opencv(VS2019 C++)
Canny Detector 是一种针对快速实时边缘检测而优化的多阶段算法,该算法的基本目标是检测亮度(大梯度)的急剧变化,例如从白色到黑色的转换,在给定一组阈值的情况下将它们定义为边缘
opencv使用track bar 调整canny算子参数,提取到合适的图像边缘。
#include<iostream>
#include<opencv2/opencv.hpp>
using namespace cv;void trackBar(int, void*);
int s1=0,s2=0;
Mat src, dst;
int main()
{src = imread("E:/image/image/daibola.jpg");if(src.empty()){printf("can not load image \n");return -1;}cvNamedWindow("input", CV_WINDOW_AUTOSIZE);imshow("input", src);dst = src.clone();cvNamedWindow("output", CV_WINDOW_AUTOSIZE);createTrackbar("canny1", "output", &s1, 255, trackBar);createTrackbar("canny2", "output", &s2, 255, trackBar);GaussianBlur(src,src,Size(3,3),0);waitKey();return 0;
}void trackBar(int, void*)
{Canny(src,dst,s1,s2,3);imshow("output", dst);
}
sobel算子是一种常用的边缘检测算子,是一阶的梯度算法。对噪声具有平滑作用,提供较为精确的边缘方向信息,边缘定位精度不够高。当对精度要求不是很高时,是一种较为常用的边缘检测方法。
opencv实现代码如下:
#include<opencv2/opencv.hpp>
#include<iostream>
#include<opencv2/highgui/highgui_c.h>
#include<vector>
#include<cstdlib> using namespace cv;
using namespace std;int main()
{Mat src, dst;src = imread("D://opencv//0.jpg");if (src.empty()){printf("can not load image \n");return -1;}dst = Mat::zeros(src.size(), src.type());cvNamedWindow("input", CV_WINDOW_AUTOSIZE);imshow("input", src);Mat kernel = (Mat_<int>(2, 2) << 0, 1, -1, 0);filter2D(src, dst, -1, kernel, Point(-1, -1), 0.0); //对图像做卷积Mat xgrad, ygrad;Sobel(src, xgrad, CV_16S, 1, 0);Sobel(src, ygrad, CV_16S, 0, 1);convertScaleAbs(xgrad, xgrad); //该操作可实现图像增强等相关操作的快速运算convertScaleAbs(ygrad, ygrad);addWeighted(xgrad, 0.5, ygrad, 0.5, 0, dst); //将两张相同大小,相同类型的图片融合的函数//addWeighted(dst,0.5,src,1,0,dst);cvNamedWindow("output", CV_WINDOW_AUTOSIZE);imshow("output", dst);waitKey();return 0;
}
实现效果如下:
opencv3/C++图像边缘提取canny算子与Sobel算子实现opencv(VS2019 C++)相关推荐
- 应用sobel算子算法c语言,Canny算子与Sobel算子求图像边缘的C代码实现
*Canny算子与Sobel算子求图像边缘笔记* 1.Canny求边缘算法原理简述 Canny检测边缘主要分为以下 四个算法步骤: A:噪声去除 canny算子是通过对每个像素点求一阶导数来找到梯度明 ...
- 图像边缘提取——梯度算子、Roberts算子、prewitt算子、Sobel算子、Kirsch算子、LOG算子的matlab实现
#图像边缘提取-- ##梯度算子.Roberts算子.prewitt算子.Sobel算子.Kirsch算子.LOG算子的matlab实现 matlab代码 clear; f=rgb2gray(imre ...
- 边缘检测,Roberts 算子,Sobel算子,Canny 算子
边缘检测 在图像中,边缘是图像局部强度变化最明显的地方,它主要存在于目标与目标.目标与背景.区域与区域之间.边缘表明一个特征区域的终结和另一特征区域的开始.边缘所分开区域的内部特征或属性是一致的,而不 ...
- 边缘提取——Prewitt算子和Sobel算子
目录 Prewitt算子和Sobel算子 理论介绍 编码实现(Python) debug过程 Prewitt算子和Sobel算子 理论介绍 Prewitt算子和Sobel算子也是基于一阶导数的算子. ...
- 灰度图像--图像增强 Robert算子、Sobel算子
灰度图像--图像增强 Robert算子.Sobel算子 目录(?)[+] 开篇废话 图像梯度介绍 Robert算子 Sobel算子 代码 结果 总结 学习DIP第36天 转载请标明本文 ...
- Robert算子、Sobel算子、拉普拉斯算子
文章目录 1.Robert算子 2.Sobel算子 3.拉普拉斯算子 4.结果 1.Robert算子 // 1. Robert算子cv::Mat gray;cv::Mat dstRoX;cv::Mat ...
- python sobel算子_python自编程序实现——robert算子、sobel算子、Laplace算子进行图像边缘提取...
实现思路: 1,将传进来的图片矩阵用算子进行卷积求和(卷积和取绝对值) 2,用新的矩阵(与原图一样大小)去接收每次的卷积和的值 3,卷积图片所有的像素点后,把新的矩阵数据类型转化为uint8 注意: ...
- 《opencv学习笔记》-- 边缘检测和canny算子、sobel算子、LapIacian 算子、scharr滤波器
目录 边缘检测 canny算子 sobel算子 LapIacian 算子 (拉普拉斯) scharr滤波器 边缘检测 边缘检测步骤: 1.滤波: 边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导 ...
- 差分近似图像导数算子之Sobel算子
背景引言 图像处理中,一个最基本并且最重要的卷积就是导数的计算,一般用来表达微分最常用的操作是Sobel算子,可以包含任意阶的微分以及融合偏导.主要用作为边缘检测.在技术上,它是一离散性差分算子,用来 ...
最新文章
- Cisco路由器的口令恢復
- sas数据集怎么导出_PCA算法 | 数据集特征数量太多怎么办?用这个算法对它降维打击!...
- C语言——第六周作业
- 《Groovy语言规范》-语法(三)
- beyond compare如何添加新文件并重新比较?
- 查看mysql库大小,表大小,索引大小
- MEP(minimum error pruning) principle with python implemention
- 隐藏esp_仅需一分钟教你看懂汽车内的隐藏功能,哪些功能是你不知道的?
- html 输入框从左上角,在输入框的左上角,使文本开始_input_开发99编程知识库
- java中 下列不合法的语句_在Java中,下列( )是不合法的赋值语句。_学小易找答案...
- 如何测试服务器上数据库服务器能否连接上
- 火灾原来离我们那么近
- CentOS安装lynis安全漏洞扫描工具
- Python绘图 好用的网址
- 2021.11.19【读书笔记】丨snakemake常见问题汇总(下)
- JSP中page指令
- Array王锐力作:osg与PhysX结合系列内容——第5节 角色动画效果(下)
- leetcode 968 监控摄像头
- 面试了几十家软件测试公司全是这个“套路”
- 80行代码自己动手写一个表格拆分与合并小工具(文末附工具下载)
热门文章
- java juc exchanger_JUC——Exchanger
- 小学生计算机使用计划书,【习惯养成计划表】_小学生好习惯养成计划一览表...
- 组件封装为mxp文件的方法
- Python实现 通过RS232 SCPI 命令控制Tektronix DMM4050
- 洛伦兹方程c语言,龙格库塔在C为洛伦兹方程
- 超级变态聊天 聊到对方崩溃
- php烟花效果,PS制作浪漫烟花效果
- MR三维电子沙盘虚拟现实数字沙盘开发教程第1课
- 云鲸智能首次亮相上海进博会,引领行业发展新风向
- 冒泡,选择,插入,快速排序