博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Opencv3 Robert算子 Sobel算子 拉普拉斯算子 自定义卷积核——实现渐进模糊
阅读量:5134 次
发布时间:2019-06-13

本文共 2681 字,大约阅读时间需要 8 分钟。

#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;
}

 

 

转载于:https://www.cnblogs.com/herd/p/9735042.html

你可能感兴趣的文章
SQLSERVER使用密码加密备份文件以防止未经授权还原数据库
查看>>
C#不登录电脑启动程序
查看>>
ASP.NET缓存中Cache过期的三种策略
查看>>
6天通吃树结构—— 第一天 二叉查找树
查看>>
理解C# 4 dynamic(1) - var, object, dynamic的区别以及dynamic的使用
查看>>
Windows 8实例教程系列 - 布局控制
查看>>
章节2:SQL之多表连接
查看>>
silverlight下多线程处理
查看>>
如何使用ITEXTSHARP将HTML代码字符串写进PDF
查看>>
git bash 出现vim的时候怎么退出
查看>>
React Native开发之IDE(Atom+Nuclide)安装,运行,调试
查看>>
[10月4日的脚本] 获取Office365邮箱文件夹的权限
查看>>
PHP压缩文件操作
查看>>
PHP curl扩展实现数据抓取
查看>>
生成随机密钥
查看>>
falsk 请求钩子
查看>>
8-过滤器Filter和监听器Listener
查看>>
从头开始学JavaScript (十三)——Date类型
查看>>
spring mvc 解决csrf跨站请求攻击
查看>>
linux syslog 3
查看>>