一、概述

二、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)、边缘检测的更多相关文章

  1. OpenCV学习代码记录——canny边缘检测

    很久之前学习过一段时间的OpenCV,当时没有做什么笔记,但是代码都还在,这里把它贴出来做个记录. 代码放在码云上,地址在这里https://gitee.com/solym/OpenCVTest/tr ...

  2. opencv学习之路(18)、霍夫变换

    一.简介 在图像处理和计算机视觉领域中,如何从当前的图像中提取所需要的特征信息是图像识别的关键所在.在许多应用场合中需要快速准确地检测出直线或者圆.其中一种非常有效的解决问题的方法是霍夫(Hough) ...

  3. opencv学习之路(5)、鼠标和滑动条操作

    一.鼠标事件 #include<opencv2/opencv.hpp> #include<iostream> using namespace cv; using namespa ...

  4. opencv学习之路(2)、读取视频,读取摄像头

    一.介绍 视频读取本质上就是读取图像,因为视频是由一帧一帧图像组成的.1秒24帧基本就能流畅的读取视频了. ①读取视频有两种方法: A. VideoCapture cap; cap.open(“1.a ...

  5. Opencv学习笔记3:边缘检测算子的实现方法

    一.边缘检测概念 图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘.效果如图: 接下来介绍一下边缘提取的几种算子,具体证明过程 ...

  6. OpenCV 学习之路(2) -- 操作像素

    本节内容: 访问像素值 用指针扫描图像 用迭代器扫描图像 编写高效的图像扫描循环 扫描图像并访问相邻像素 实现简单的图像运算 图像重映射 访问像素值 准备工作: 创建一个简单函数,用它在图像中加入椒盐 ...

  7. Opencv学习之路—Opencv下基于HOG特征的KNN算法分类训练

    在计算机视觉研究当中,HOG算法和LBP算法算是基础算法,但是却十分重要.后期很多图像特征提取的算法都是基于HOG和LBP,所以了解和掌握HOG,是学习计算机视觉的前提和基础. HOG算法的原理很多资 ...

  8. OpenCV学习笔记(11)——Canny边缘检测

    了解Canny边缘检测的概念 1.原理 Canny边缘检测是一种非常流行的边缘检测算法,是 John F.Canny在1986年提出的.它是一个有很多步构成的算法 1)噪声去除 使用5*5的高斯滤波器 ...

  9. OpenCV 学习之路(1)

    OpenCV的第一个代码: #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #i ...

随机推荐

  1. cocos2d-X JS 获取cocostudio中的UI组件

    1.先加载cocostudio导出的json文件,代码如下所示: var dong = ccs.load("res/Login.json"); //_login.setPositi ...

  2. js控制元素隐藏和显示

    原生: 方法一: document.getElementById("idname").style.visibility="hidden"; document.g ...

  3. 关于oracle中的数字类型

    1.关于number类型. 以下是从其文档中摘录出的一句话: p is the precision, or the total number of significant decimal digits ...

  4. windows批处理定时关机

    2017-04-11 windows bat文件可以简化很多cmd命令,为我们提供很多方便.今天介绍定时关机的批处理代码实现: 我们知道windows下的定时关机可以通过shutdown命令实现,如果 ...

  5. html5-css综合练习

    div{    width: 600px;    height: 800px;    padding: 40px;    font-size: 12px;    line-height: 25px;  ...

  6. hdu5302 构造

    题意:给你一个无向图,它的边要么是黑色要么是白色,且图上的每个点最多与两个黑边两个白边相连.现在,Demon将图分成两部分,一部分包含所有的黑边,另一部分包括所有的白边,给你白边图中度为0的点的数量w ...

  7. sitecore系统教程之Item快速了解

    项目是Sitecore网站的基本构建块.项目可以表示构成网页的任何类型的信息,例如,一段文本,媒体文件,布局等. 项目始终具有名称,唯一标识项目的ID,并且它基于定义项目包含的字段的模板.此外,项目可 ...

  8. RootConfig类

    package com.ssm.yjblogs.config; import java.util.Properties; import javax.sql.DataSource; import org ...

  9. Java多线程-----原子变量和CAS算法

       原子变量      原子变量保证了该变量的所有操作都是原子的,不会因为多线程的同时访问而导致脏数据的读取问题      Java给我们提供了以下几种原子类型: AtomicInteger和Ato ...

  10. 使用Java注解自动化处理对应关系实现注释代码化

    概述 假设我们要从一个 ES 索引(相当于一张DB表)查询数据,ES表有 biz_no, type, status 等字段, 而应用对象则有属性 bizNo, type, status 等.这样,就会 ...