C++ opencv图像处理实现图片边缘检测示例

 更新时间:2022年05月12日 15:50:32   作者:浅念念52  
这篇文章主要为大家介绍了C++ opencv实现图片边缘检测示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

边缘检测简介

边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。

图像边缘检测大幅度地减少了数据量,并且剔除量不相关的信息,保留了图像重要的结构属性。

一、边缘检测步骤

1.图像获取

2.图像滤波

3.图像增强

4.图像检测

5.图像定位

二、Canny

1.函数

void Canny(InputArray image, OutputArray edges,
		double threshold1, double threshold2,
		int apertureSize = 3, bool L2gradient = false);
	image 8位输入图像
	edges 单通道8位图像
	threshold1  迟滞过程第一个阈值
	threshold2  迟滞过程第二个阈值
	apertureSize 算子的孔径大小
	L2gradient 范数

2.代码

#include<iostream>
#include<opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
	Mat img1;
	img1 = imread("图片1.png", 0);
	imshow("原图", img1);
	Canny(img1, img1,10, 10);
	imshow("Canny", img1);
	waitKey(0);
}

效果如下:

二、Sobel

1.函数

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);
	src 输入
	dst 输出
	ddepth 输出图像的数据类型
	dx x方向的差分阶数
	dy y方向的差分阶数
	Ksize 尺寸 1,3,5,7
	scale 缩放因子
	delta 偏值
	borderType 边界像素模式

2.代码

int main()
{
	Mat img1, img2;
	img1 = imread("图片1.png", 0);
	imshow("原图", img1);
	Sobel(img1, img2, CV_8U, 2,0,1);
	imshow("sobel", img2);
	waitKey(0);
}

效果如下:

三、Scharr

1.函数

void Scharr(InputArray src, OutputArray dst, int ddepth,
		int dx, int dy, double scale = 1, double delta = 0,
		int borderType = BORDER_DEFAULT);
	src 输入
	dst 输出
	ddepth 输出图像的数据类型
	dx x方向的导数
	dy y方向的导数
	scale 缩放因子
	delta 偏值
	borderType 边界像素模式

2.代码

int main()
{
	Mat img1, img2;
	img1 = imread("图片1.png", 0);
	imshow("原图", img1);
	Scharr(img1, img2, CV_8U, 1, 0);
	imshow("Scharr", img2);
	waitKey(0);
}

效果如下:

四、Laplacian

1.函数

	void Laplacian(InputArray src, OutputArray dst, int ddepth,
		int ksize = 1, double scale = 1, double delta = 0,
		int borderType = BORDER_DEFAULT);
	src 输入
	dst 输出
	ddepth 输出图像的数据类型
	Ksize 滤波器大小 正奇数
	scale 缩放因子
	delta 偏值
	borderType 边界像素模式

2.代码

int main()
{
	Mat img1, img2;
	img1 = imread("图片1.png", 0);
	imshow("原图", img1);
	Laplacian(img1, img2,CV_8U,1);
	imshow("Laplacian", img2);
	waitKey(0);
}

效果如下:

总结

本文只是简单介绍了几种常用的边缘检测算法函数,都是调用函数解决问题,大家可以更加深入的研究数学方式的边缘检测算法,更多关于C++ opencv图片边缘检测的资料请关注脚本之家其它相关文章!

相关文章

  • C++ Date类的具体使用(构建,重载等)

    C++ Date类的具体使用(构建,重载等)

    本文主要介绍了C++ Date类的具体使用(构建,重载等),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • C++中的数字转字符串to_string

    C++中的数字转字符串to_string

    这篇文章主要介绍了C++中的数字转字符串to_string,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 使用C++一步步实现俄罗斯方块后续

    使用C++一步步实现俄罗斯方块后续

    本文主要给大家分享的是作者在使用C++制作俄罗斯方块小游戏的时候所需要的常用的函数,有需要的小伙伴可以借鉴下,希望大家能够喜欢。
    2017-12-12
  • 使用devenv在命令行中编译项目的方法

    使用devenv在命令行中编译项目的方法

    下面小编就为大家分享一篇使用devenv在命令行中编译项目的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • C++17新特性个人总结

    C++17新特性个人总结

    这篇文章主要介绍了C++17新特性个人总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • C语言中的运算符优先级和结合性一览表

    C语言中的运算符优先级和结合性一览表

    这篇文章主要介绍了C语言中的运算符优先级和结合性一览表,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Matlab利用prim算法实现迷宫的生成

    Matlab利用prim算法实现迷宫的生成

    普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。本文将利用prim算法迷宫生成及其艺术渲染,感兴趣的可以了解一下
    2022-10-10
  • C++静态库与动态库文件的生成和使用教程

    C++静态库与动态库文件的生成和使用教程

    库文件是计算机上的一类文件,可以简单的把库文件看成一种代码仓库,它提供给使用者一些可以直接拿来用的变量、函数和类,下面这篇文章主要给大家介绍了关于C++静态库与动态库文件的生成和使用的相关资料,需要的朋友可以参考下
    2023-03-03
  • C++实现LeetCode(86.划分链表)

    C++实现LeetCode(86.划分链表)

    这篇文章主要介绍了C++实现LeetCode(86.划分链表),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++11 模板参数的“右值引用”是转发引用吗

    C++11 模板参数的“右值引用”是转发引用吗

    这篇文章主要介绍了C++11 模板参数的“右值引用”是转发引用吗,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05

最新评论