opencv学习之路(17)、边缘检测
一、概述

二、canny边缘检测


#include "opencv2/opencv.hpp"
using namespace cv; void main()
{
//Canny边缘检测
Mat srcImg = imread("E://1.png",); //0表示以灰度图读入,彩色图和灰度图进行边缘检测时略有不同,建议使用灰度图
//medianBlur(srcImg, srcImg,5);//中值滤波
imshow("src", srcImg); Mat dstImg;
Canny(srcImg, dstImg, , );
imshow("Canny", dstImg);
waitKey();
}

Canny边缘检测小应用——检测工件是否平整,检测布料是否平滑
#include "opencv2/opencv.hpp"
using namespace cv; Mat src,dst;
int min_thres=,max_thres=;//不能直接命名为min,max,标准库std里有min和max方法 void onCanny(int,void*){
Canny(src, dst,min_thres,max_thres);
imshow("src",src);
imshow("Canny", dst);
} void main()
{
src=imread("E://9.jpg",);
namedWindow("Canny",CV_WINDOW_AUTOSIZE);
createTrackbar("min_thres","Canny",&min_thres,,onCanny,);
createTrackbar("max_thres","Canny",&max_thres,,onCanny,); onCanny(min_thres,);//回调函数初始化
onCanny(max_thres,); waitKey();
destroyAllWindows();
}

注意:canny边缘检测后,图像为灰度图!
三、Sobel算子(带方向,分x,y方向)


#include "opencv2/opencv.hpp"
using namespace cv; void main()
{
Mat grad_x, grad_y;
Mat abs_grad_x, abs_grad_y, dst; Mat src = imread("E://5.jpg", );
imshow("src", src); Sobel(src, grad_x, CV_16S, , , );//16位有符号(求导时有正负),x方向参数设置为1,0
convertScaleAbs(grad_x, abs_grad_x);//转为无符号
imshow("X方向", abs_grad_x); Sobel(src, grad_y, CV_16S, , , );//y方向参数设置为0,1
convertScaleAbs(grad_y, abs_grad_y);
imshow("Y方向", abs_grad_y); addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, , dst);
imshow("合并效果", dst); waitKey();
destroyAllWindows();
}

四、Laplacian算子(二阶,带方向)

#include "opencv2/opencv.hpp"
using namespace cv; void main()
{
Mat src,dst,abs_dst;
src = imread("E://lena.jpg", );
imshow("src", src); Laplacian(src, dst, CV_16S, );
convertScaleAbs(dst, abs_dst);
imshow("Laplacian", abs_dst); waitKey();
destroyAllWindows();
}

五、其他
| Z1 | Z2 | Z3 |
| Z4 | Z5 | Z6 |
| Z7 | Z8 | Z9 |
Robets交叉梯度算子:▽f≈|Z9-Z5|+|Z8-Z6|
Prewitt梯度算子:▽f≈|(Z7+Z8+Z9)-(Z1+Z2+Z3)|+|(Z3+Z6+Z9)-(Z1+Z4+Z7)|
Sobel梯度算子:▽f≈|(Z7+Z8+Z9)-(Z1+Z2+Z3)|+|(Z3+Z6+Z9)-(Z1+Z4+Z7)|
opencv学习之路(17)、边缘检测的更多相关文章
- OpenCV学习代码记录——canny边缘检测
很久之前学习过一段时间的OpenCV,当时没有做什么笔记,但是代码都还在,这里把它贴出来做个记录. 代码放在码云上,地址在这里https://gitee.com/solym/OpenCVTest/tr ...
- opencv学习之路(18)、霍夫变换
一.简介 在图像处理和计算机视觉领域中,如何从当前的图像中提取所需要的特征信息是图像识别的关键所在.在许多应用场合中需要快速准确地检测出直线或者圆.其中一种非常有效的解决问题的方法是霍夫(Hough) ...
- opencv学习之路(5)、鼠标和滑动条操作
一.鼠标事件 #include<opencv2/opencv.hpp> #include<iostream> using namespace cv; using namespa ...
- opencv学习之路(2)、读取视频,读取摄像头
一.介绍 视频读取本质上就是读取图像,因为视频是由一帧一帧图像组成的.1秒24帧基本就能流畅的读取视频了. ①读取视频有两种方法: A. VideoCapture cap; cap.open(“1.a ...
- Opencv学习笔记3:边缘检测算子的实现方法
一.边缘检测概念 图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘.效果如图: 接下来介绍一下边缘提取的几种算子,具体证明过程 ...
- OpenCV 学习之路(2) -- 操作像素
本节内容: 访问像素值 用指针扫描图像 用迭代器扫描图像 编写高效的图像扫描循环 扫描图像并访问相邻像素 实现简单的图像运算 图像重映射 访问像素值 准备工作: 创建一个简单函数,用它在图像中加入椒盐 ...
- Opencv学习之路—Opencv下基于HOG特征的KNN算法分类训练
在计算机视觉研究当中,HOG算法和LBP算法算是基础算法,但是却十分重要.后期很多图像特征提取的算法都是基于HOG和LBP,所以了解和掌握HOG,是学习计算机视觉的前提和基础. HOG算法的原理很多资 ...
- OpenCV学习笔记(11)——Canny边缘检测
了解Canny边缘检测的概念 1.原理 Canny边缘检测是一种非常流行的边缘检测算法,是 John F.Canny在1986年提出的.它是一个有很多步构成的算法 1)噪声去除 使用5*5的高斯滤波器 ...
- OpenCV 学习之路(1)
OpenCV的第一个代码: #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #i ...
随机推荐
- iOS 开发笔记-控制器翻页
找了一天,终于找到了两个能用的. 1.https://github.com/wangmchn/WMPageController 2.https://github.com/everettjf/EVTTa ...
- 工厂模式&策略模式。
抽象.封装,具体事情做得越多,越容易犯错误.这每个做过具体工作的人都深有体会,相反,官做得越高,说出的话越抽象越笼统,犯错误可能性就越少.好象我们从编程序中也能悟出人生道理.(百度百科) 不断抽象封装 ...
- python入门之列表
1.列表基本格式# list 类 列表li = [1, 2, 3, "sb", ["时间",[9, 10], "huang"], 6, 7, ...
- WinPE引导硬盘安装64位的Windows_Server_2008系统
用 U盘WinPE引导实现硬盘安装Windows Server 2008 R2系统的方法如果想不用光盘(光盘和光驱总是靠不住的),只用U盘或移动硬盘上的WinPE引导,在电脑硬盘安装一个64位的Win ...
- 十 js中forEach,for in,for of循环的用法
一.一般的遍历数组的方法: var array = [1,2,3,4,5,6,7]; for (var i = 0; i < array.length; i++) { console.log(i ...
- JS中常用的输出方式(五种)
1.alert("要输出的内容"); ->在浏览器中弹出一个对话框,然后把要输出的内容展示出来 ->alert都是把要输出的内容首先转换为字符串然后在输出的 2.doc ...
- jQuery选择器--:selected和:checked
:selected 概述 匹配所有选中的option元素 <!DOCTYPE html> <html> <head> <meta charset=" ...
- 把本地windows系统上的mysql数据库移到linux系统服务器上,mysql数据库拒绝访问
Mysql连接报错 原因是:远程服务器不允许你的其他程序访问它的数据库.所以,我们要对远程服务器进行设置,使它允许你进行连接. 步骤:一.进入mysql客户端,输入:use mysql; 二.输入:s ...
- 【Redis学习之八】Redis集群:主从复制
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 redis-2.8.18 Redis集群分类: 主从复制 R ...
- awk和sed
在正则表达式那章有两个比较好用的命令sed 和awk awk 是按指定分隔符分隔,默认空白键,第一个为$1,第二个为$2... 命令: FS分隔符