Opencv3 Robert算子 Sobel算子 拉普拉斯算子 自定义卷积核——实现渐进模糊
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
//Robert算子
int Demo_Robert()
{
char win1[] = "window1";
char win2[] = "window2";
char win3[] = "window3";
Mat img1, img2, img3, kernel_x, kernel_y;
img1 = imread("D://images//box//0019-00.jpg");
if (img1.empty())
{
cout << "could not load image..."<< endl;
return 0;
}
imshow(win1,img1);
//X方向—Robert算子
kernel_x = (Mat_<int>(2,2)<<1,0,0,-1);
filter2D(img1,img2,-1,kernel_x,Point(-1,-1),0,0);
//Y方向—Robert算子
kernel_y = (Mat_<int>(2, 2) << 0, 1, -1, 0);
filter2D(img1, img3, -1, kernel_y, Point(-1, -1), 0, 0);
imshow(win2, img2);
imshow(win3, img3);
return 0;
}
//Sobel算子
int Demo_Sobel()
{
char win1[] = "window1";
char win2[] = "window2";
char win3[] = "window3";
Mat img1, img2, img3, kernel_x, kernel_y;
img1 = imread("D://images//box//0019-00.jpg");
if (img1.empty())
{
cout << "could not load image..." << endl;
return 0;
}
imshow(win1, img1);
//X方向—Sobel算子
kernel_x = (Mat_<int>(3, 3) << -1,0,1,-2,0,2,-1,0,1);
filter2D(img1, img2, -1, kernel_x, Point(-1, -1), 0, 0);
//Y方向—Sobel算子
kernel_y = (Mat_<int>(3, 3) << -1,-2,-1,0,0,0,1,2,1);
filter2D(img1, img3, -1, kernel_y, Point(-1, -1), 0, 0);
imshow(win2, img2);
imshow(win3, img3);
return 0;
}
//拉普拉斯算子
int Demo_Laplace()
{
char win1[] = "window1";
char win2[] = "window2";
char win3[] = "window3";
Mat img1, img2, img3, kernel_x, kernel_y;
img1 = imread("D://images//box//0019-00.jpg");
if (img1.empty())
{
cout << "could not load image..." << endl;
return 0;
}
imshow(win1, img1);
//Laplace算子
kernel_x = (Mat_<int>(3, 3) << 0, -1, 0, -1, 4, -1, 0, -1, 0);
filter2D(img1, img2, -1, kernel_x, Point(-1, -1), 0, 0);
imshow(win2, img2);
return 0;
}
//自定义卷积核——实现渐进模糊
int Demo_Kernel()
{
char win1[] = "window1";
char win2[] = "window2";
char win3[] = "window3";
Mat img1, img2, img3, kernel_x, kernel_y;
img1 = imread("D://images//box//0019-00.jpg");
if (img1.empty())
{
cout << "could not load image..." << endl;
return 0;
}
imshow(win1, img1);
int c = 0;
int index = 0;
int ksize = 3;
while (true)
{
c = waitKey(600);
if ((char)c==27)
{
break;
}
ksize = 4 + (index % 5) * 2 + 1;
Mat kernel1 = Mat::ones(Size(ksize,ksize),CV_32F)/(float)(ksize*ksize);
filter2D(img1,img2,-1,kernel1,Point(-1,-1));
index++;
imshow(win2,img2);
}
imshow(win2, img2);
return 0;
}
int main()
{
//Demo_Robert();
//Demo_Sobel();
//Demo_Laplace();
Demo_Kernel();
waitKey(0);
return 0;
}


Opencv3 Robert算子 Sobel算子 拉普拉斯算子 自定义卷积核——实现渐进模糊的更多相关文章
- 【OpenCV】边缘检测:Sobel、拉普拉斯算子
推荐博文,博客.写得很好,给个赞. Reference Link : http://blog.csdn.net/xiaowei_cqu/article/details/7829481 一阶导数法:梯度 ...
- 【OpenCV新手教程之十二】OpenCV边缘检測:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/25560901 作者:毛星云(浅墨) ...
- [ZZ] 边缘检测 梯度与Roberts、Prewitt、Sobel、Lapacian算子
http://blog.csdn.net/swj110119/article/details/51777422 一.学习心得: 学习图像处理的过程中,刚开始遇到图像梯度和一些算子的概念,这两者到底是什 ...
- 机器学习进阶-图像梯度计算-scharr算子与laplacian算子(拉普拉斯) 1.cv2.Scharr(使用scharr算子进行计算) 2.cv2.laplician(使用拉普拉斯算子进行计算)
1. cv2.Scharr(src,ddepth, dx, dy), 使用Scharr算子进行计算 参数说明:src表示输入的图片,ddepth表示图片的深度,通常使用-1, 这里使用cv2.CV_6 ...
- [OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑
http://blog.csdn.net/poem_qianmo/article/details/25560901 本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog ...
- 边缘检测:Canny算子,Sobel算子,Laplace算子
1.canny算子 Canny边缘检测算子是John F.Canny于 1986 年开发出来的一个多级边缘检测算法.更为重要的是 Canny 创立了边缘检测计算理论(Computational the ...
- Laplace(拉普拉斯)算子
[摘要] Laplace算子作为边缘检测之一,和Sobel算子一样也是工程数学中常用的一种积分变换,属于空间锐化滤波操作.拉普拉斯算子(Laplace Operator)是n维欧几里德空间中的一个二阶 ...
- opencv边缘检测-拉普拉斯算子
sobel算子一文说了,索贝尔算子是模拟一阶求导,导数越大的地方说明变换越剧烈,越有可能是边缘. 那如果继续对f'(t)求导呢? 可以发现"边缘处"的二阶导数=0. 我们可以利用这 ...
- OpenCV笔记(2)(高斯平滑、腐蚀和膨胀、开闭运算、礼帽和黑帽、Sobel及其他算子)
一.高斯平滑(模糊) def gaussian_blur(image): # 设置ksize来确定模糊效果 img = cv.GaussianBlur(image, (5, 5), 0) cv.ims ...
随机推荐
- fileupload页面跳转找不到原页面的解决方法
做了个上传图片的功能,之前做的全都对,完全可以实现,但是后来再弄的时候,只要FileUpload控件里面有字(选择了图片),再按button.它尽然不执行button1_click事件,直接页面跳转, ...
- OPC接口相关资料地址
OPC官方网址:https://opcfoundation.org/ OPC中国官网: http://www.chinaopc.org/ ------------------------------- ...
- (转)将rdlc报表作为资源嵌套使用
本文转载自:http://www.cnblogs.com/chenxizhang/archive/2009/05/16/1458469.html 如果我们准备在Windows Forms里面使用rdl ...
- xss 攻击 sql 注入
XSS测试 "/><script>alert(document.cookie)</script><!-- <script>alert(docu ...
- 【转】JMeter测试有无数据库连接池的性能
使用JMeter测试一下有无数据库连接池的性能: 1.下载JMeter 2.无连接池的servlet Java代码 public void doGet(HttpServletRequest reque ...
- TCP之二:TCP的三次握手与四次分手
一.TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续.它只是一个超级麻烦的协议,而它又是互联网的基础 ...
- 操作系统-百科:Linux
ylbtech-操作系统-百科:Linux Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNI ...
- 十七.jQuery源码解析之入口方法Sizzle(1)
函数Sizzle(selector,context,results,seed)用于查找与选择器表达式selector匹配的元素集合.该函数是选择器引擎的入口. 函数Sizzle执行的6个关键步骤如下: ...
- Django学习---缓存
缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存. 缓存将一个某个views的返回值保存至内存或者memcach ...
- python找寻合适的日志库logging Handler——Handler自定义实现
最近在用python tornado开发一个app的服务端.投产的系统肯定需要包含日志功能,这里就自然想到了用python自带的logging库. logging中日志内容的输出都交由Handle ...