本章内容:

1. LOG算子-墨西哥草帽算子
2. canny算子

1. LOG算子-墨西哥草帽算子

输出结果

2. canny算子

输出结果

源代码

#include <ostream>
#include <opencv.hpp>

int main(int argc, char *argv[])
{
    /*
     本章内容:
        1. LOG算子-墨西哥草帽算子
        2. canny算子
    */
    cv::String fileName = "/home/wang/dev/Image/cdut.jpeg";
    cv::Mat src = cv::imread(fileName);
    if(src.data == NULL){
        printf("图像读入失败\n");
        return -1;
    }
    /* 1. LOG算子-墨西哥草帽算子
        计算过程:
                1.图像灰度化
                2.高斯模糊
                3.拉普拉斯算子
    */
    cv::Mat gray;
    cv::Mat dstGs;
    cv::Mat dstLOG;
    cv::cvtColor(src,gray,cv::COLOR_BGR2GRAY);
    cv::GaussianBlur(gray,dstGs,cv::Size(5,5),5.0);
    cv::Laplacian(dstGs,dstLOG,-1, 5);
    cv::imshow("gray",gray);
    cv::imshow("Gaussian blur",dstGs);
    cv::imshow("LOG", dstLOG);

/*2. canny算子
     计算过程:
            1.图像灰度化
            2.高斯模糊
            3.分别计算x,y方向梯度
            4. 设定上下阈值,候选区的值若链接上阈值,则认为是边缘。
    */
    cv::Mat dstCanny;
    cv::Mat dstCanny1;
    cv::Mat dstX;
    cv::Mat dstY;
    /*
            CV_EXPORTS_W void Sobel( InputArray src, OutputArray dst, int ddepth,
                         int dx, int dy, int ksize = 3,
                         double scale = 1, double delta = 0,
                         int borderType = BORDER_DEFAULT );
    */

cv::Sobel(dstGs,dstX,CV_16SC1,1,0); // 计算x方向sobel梯度, 梯度图像,输出包含符号
    cv::Sobel(dstGs,dstY,CV_16SC1,0,1); // 计算y方向 sobel梯度, 梯度图像,输出包含符号
    /*
        api接口: CV_EXPORTS_W void Canny( InputArray image, OutputArray edges,
                         double threshold1, double threshold2,
                         int apertureSize = 3, bool L2gradient = false );

CV_EXPORTS_W void Canny( InputArray dx, InputArray dy,
                                 OutputArray edges,
                                 double threshold1, double threshold2,
                                 bool L2gradient = false );

参数分析:
               @param ddepth output image depth, see @ref filter_depths "combinations"; in the case of
                8-bit input images it will result in truncated derivatives.
                {
                    Unsigned 8bits uchar 0~255
                    Mat: CV_8UC1, CV_8UC2, CV_8UC3, CV_8UC4

Signed 8bits char -128~127
                    Mat: CV_8SC1,CV_8SC2,CV_8SC3,CV_8SC4

Unsigned 16bits ushort 0~65535
                    Mat: CV_16UC1,CV_16UC2,CV_16UC3,CV_16UC4

Signed 16bits short -32768~32767
                    Mat: CV_16SC1,CV_16SC2,CV_16SC3,CV_16SC4

Signed 32bits int -2147483648~2147483647
                    Mat: CV_32SC1,CV_32SC2,CV_32SC3,CV_32SC4

Float 32bits float -1.18*10-38~3.40*10-38
                    Mat: CV_32FC1,CV_32FC2,CV_32FC3,CV_32FC4

Double 64bits double
                    Mat: CV_64FC1,CV_64FC2,CV_64FC3,CV_64FC4
                }
    */
    cv::Canny(dstX,dstY,dstCanny,50,150);
    cv::Canny(dstGs, dstCanny1,50,150);
    cv::imshow("my Canny", dstCanny);
    cv::imshow("sys Canny", dstCanny1);

cv::waitKey(0);
    return 1;
}

opencv 基本算子,LOG算子-墨西哥草帽算子,canny算子相关推荐

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

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

  2. python的opencv操作记录12——Canny算子使用

    文章目录 Canny算子 非极大值抑制 非极大值抑制中的插值 滞后阈值 实际应用 直接使用Canny算子 使用膨胀 先阈值分割 Canny算子 上一篇说到,我在一个小项目里需要在一幅图像中提取一根试管 ...

  3. C++ Canny算子进行边缘检测

    C++实现Canny算子 进行边缘检测 文章目录 C++实现Canny算子 进行边缘检测 前言 一.Canny算子原理 二.C++实现Canny算子 1.步骤 2.C++代码如下 三.Canny算子运 ...

  4. 【youcans 的 OpenCV 例程200篇】153. 边缘检测之 DoG 算子

    欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 [youcans 的 OpenCV 例程20 ...

  5. OpenCV(十七)边缘检测3 -- Canny算子(最优边缘检测)

    目录 一.基础理论 1.作用及介绍 1.原理 2.过程 3.Canny函数 二.回调函数及总代码 效果 参考资料 ​​​​​​​ 一.基础理论 1.作用及介绍 Canny边缘检测是非常流行的边缘检测算 ...

  6. OpenCV——canny算子

    1. opencv--Canny算子 Canny 的目标是找到一个最优的边缘检测算法,最优边缘检测的含义是: 最好的检测: 算法能够尽可能多地标识出图像中的实际边缘. 最好的定位: 标识出的边缘要尽可 ...

  7. opencv学习笔记17:梯度运算之laplacian算子及其应用

    laplacian算子理论 前文介绍了sobel算子及其函数使用 和scharr算子及其函数使用 使用方法 不同算子比较 sobel,和scharr算子:右边121列-左边121列.右边-3,10,3 ...

  8. c++gdal如何在大图像中截取小图像并获取其图像信息_【图像处理】OpenCV系列十 --- 边缘检测之Canny算子...

    上一篇我们学习了图像处理形态学相关知识点,相信大家学习之后已经对形态学有了足够的理解了,那么接下来,我们一起来学习一下图像处理中的边缘检测吧!我们将会重点学习边缘检测各种算子和滤波器 --- Cann ...

  9. 【OpenCV 例程200篇】65. 图像锐化——Scharr 算子

    [OpenCV 例程200篇]65. 图像锐化--Scharr 算子 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 ...

最新文章

  1. Java知识系统回顾整理01基础01第一个程序01JDK 安装
  2. LeetCode 817. Linked List Components
  3. SQL注入之布尔盲注——sql-lab第八关
  4. Spring 2.X 中AOP的简明教程
  5. 如何处理使用 SAP UI5 消费真实的 OData 服务时遇到的跨域问题
  6. Lab 6:uC/OS II
  7. WCF的用户名+密码认证方式
  8. wordpress进阶教程(十九):创建自定义的找回密码页面
  9. 把分类信息,在表格中展现出来,通过合并单元格来实现信息之间的层级关系...
  10. 以太坊上已有十个DeFi协议的锁仓量超过10亿美元
  11. Smack+OpenFire搭建IM通信,包含心跳和自动重连(Android实现)
  12. NOI2019游记 —— 夏花般绚烂,繁星般璀璨
  13. activity 流程编辑器_最好用的流程编辑器bpmnjs系列之Viewer
  14. 第一部分 第二章 答案合集(part 2)1024-1038
  15. 国内银行CNAPS CODE 查询
  16. css层叠排版,请收下这72个炫酷的CSS技巧
  17. 4070显卡相当于什么水平 4070显卡参数 rtx4070显卡功耗
  18. C#,佩尔数(Pell Number)的算法与源代码
  19. Android 同步网络时间
  20. MACHINE-CHECK-EXCEPTION蓝屏

热门文章

  1. 【计算机视觉40例】案例40:识别性别与年龄
  2. Spring Cache 注解详解
  3. 利用mkdocs部署静态网页至GitHubpages(更新版)
  4. wnmp php5.2,laravel在nginx下的伪静态配置,运行环境:wnmp2.2.5/win7sp1旗舰版
  5. 我是如何打造出自己私有云存储的
  6. Python项目实战:虚拟相机涂鸦
  7. 数据库视频(六)-自动化
  8. npm install 提示权限不足
  9. C++ 生产者消费者模式的简单实现
  10. iOS CollectionView 上拉加载更多