#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算子 拉普拉斯算子 自定义卷积核——实现渐进模糊的更多相关文章

  1. 【OpenCV】边缘检测:Sobel、拉普拉斯算子

    推荐博文,博客.写得很好,给个赞. Reference Link : http://blog.csdn.net/xiaowei_cqu/article/details/7829481 一阶导数法:梯度 ...

  2. 【OpenCV新手教程之十二】OpenCV边缘检測:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/25560901 作者:毛星云(浅墨) ...

  3. [ZZ] 边缘检测 梯度与Roberts、Prewitt、Sobel、Lapacian算子

    http://blog.csdn.net/swj110119/article/details/51777422 一.学习心得: 学习图像处理的过程中,刚开始遇到图像梯度和一些算子的概念,这两者到底是什 ...

  4. 机器学习进阶-图像梯度计算-scharr算子与laplacian算子(拉普拉斯) 1.cv2.Scharr(使用scharr算子进行计算) 2.cv2.laplician(使用拉普拉斯算子进行计算)

    1. cv2.Scharr(src,ddepth, dx, dy), 使用Scharr算子进行计算 参数说明:src表示输入的图片,ddepth表示图片的深度,通常使用-1, 这里使用cv2.CV_6 ...

  5. [OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑

    http://blog.csdn.net/poem_qianmo/article/details/25560901 本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog ...

  6. 边缘检测:Canny算子,Sobel算子,Laplace算子

    1.canny算子 Canny边缘检测算子是John F.Canny于 1986 年开发出来的一个多级边缘检测算法.更为重要的是 Canny 创立了边缘检测计算理论(Computational the ...

  7. Laplace(拉普拉斯)算子

    [摘要] Laplace算子作为边缘检测之一,和Sobel算子一样也是工程数学中常用的一种积分变换,属于空间锐化滤波操作.拉普拉斯算子(Laplace Operator)是n维欧几里德空间中的一个二阶 ...

  8. opencv边缘检测-拉普拉斯算子

    sobel算子一文说了,索贝尔算子是模拟一阶求导,导数越大的地方说明变换越剧烈,越有可能是边缘. 那如果继续对f'(t)求导呢? 可以发现"边缘处"的二阶导数=0. 我们可以利用这 ...

  9. OpenCV笔记(2)(高斯平滑、腐蚀和膨胀、开闭运算、礼帽和黑帽、Sobel及其他算子)

    一.高斯平滑(模糊) def gaussian_blur(image): # 设置ksize来确定模糊效果 img = cv.GaussianBlur(image, (5, 5), 0) cv.ims ...

随机推荐

  1. 云原生应用基金会CNCF

    2006 年 8 月 9 日,埃里克·施密特(EricSchmidt)在搜索引擎大会上首次提出了“云计算”(Cloud Computing)的概念.一转眼十年过去了,它的发展势如破竹,不断渗透当代的 ...

  2. 回文字符串的变形——poj1159

    回文字符串 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba".当然, ...

  3. postman关联 (含获取请求头的方法)

    在Tests里面输入脚本 var jsonData = JSON.parse(responseBody);postman.setEnvironmentVariable("message&qu ...

  4. Lamp 安装教程

    Ubuntu 14.04 麒麟版安装:Apache+php5+mysql+phpmyadmin. LAMP是Linux web服务器组合套装的缩写,分别是Linux+Apache+MySQL+PHP. ...

  5. Codeforces-417D总结&题解

    在分析题目前,一定要完全读懂题目意思,否则一些都是白搭.这道理谁都懂,但是能每次都做到的人不多.比如本人,这次又粗心地在这里疯狂地踩坑了. (1)本题有这么一句话:But Gena's friends ...

  6. Linux下编写 makefile 详细教程

    原文地址: https://www.cnblogs.com/mfryf/p/3305778.html 近期在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到make ...

  7. CocoStudio创建动画帧

    进入动画编辑器 选择“形体模式” 右键点击资源窗口的资源,可以进行删除,重命名的操作:  可以再资源窗口下方的预览窗口,查看选中的资源预览效果图: 右键点击“对象结构”,创建图层 选择“动画模式” 右 ...

  8. Centos 部署Cobbler系统

    一.简介 Cobbler 可以用来快速建立 Linux 网络安装环境,它已将 Linux 网络安装的技术门槛,从大专以上文化水平,成功降低到初中以下,连补鞋匠都能学会.(~..~) 二.安装环境以及资 ...

  9. JavaScript中的可枚举属性与不可枚举属性

    在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的.可枚举性决定了这个属性能否被for…in查找遍历到. 一.怎么判断属性是否可枚举 js中基本包 ...

  10. OD 实验(二十一) - 对反调试程序的逆向分析(二)

    程序: 运行程序 点击“Verify” 关闭该程序,启动 OD 再运行程序 逆向: 用 OD 载入程序 按 F8 往下走 执行完这个 call 指令就弹出了对话框 这个 call 指令调用了 Dial ...