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

目录
  • 边缘检测简介
  • 一、边缘检测步骤
  • 二、Canny
    • 1.函数
    • 2.代码
  • 二、Sobel
    • 1.函数
    • 2.代码
  • 三、Scharr
    • 1.函数
    • 2.代码
  • 四、Laplacian
    • 1.函数
    • 2.代码
  • 总结

边缘检测简介

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

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

一、边缘检测步骤

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图片边缘检测的资料请关注我们其它相关文章!

(0)

相关推荐

  • C++ OpenCV中几种基本的图像处理方式

    目录 一.图像显示 1.OpenCV的命名空间 2.Mat类简析 3.图像的载入:imread()函数 4.imshow()函数 二.图像腐蚀和膨胀 三.图像模糊 四.canny边缘检测 虽然单单要做车牌号识别的话不需要特别多种类的图像处理,但是我们不能只是为了这么一个目标去学习,所以这次就讲一些OpenCV里基本的图像处理,大家以后可以根据需求使用不同的图像处理. 一.图像显示 [打开Visual Studio]→[新建项目]→[Win32控制台应用项目(修改名称后点确定)]→[下一步]→[空

  • C++使用opencv读取图片的操作代码(图像处理)

    目录 代码理解 全部代码 读取结果 参考 代码理解 using namespace cv; 解释:加入此代码,后面就不需要在函数前加入cv:: 如从cv::imread(),可以直接写成imread() int main(int argc, char** argv) { return 0: } 解释: // argc是命令行,总的参数个数; argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数 // char *argv[] 用来取得你所输入的参数 /

  • C++ opencv图像处理实现图片几何变换示例

    目录 简介 一.图像平移 1.图像平移代码 (不改变图像大小) 2.图像平移代码 (改变图像大小) 二.图像旋转 1.图像旋转函数 2.仿射变换函数 3.代码 三.图像缩放 1.图像缩放函数 2.图像缩小代码 3.图像放大代码 总结 简介 图像的几何变换不改变图像的像素值,而是改变像素所在的几何位置,从变换的性质来分,图像的几何变换有图像的位置变换(平移,镜像,旋转).图像的形状变换(放大,缩小,错切)等基本变换,以及图像的复合变换等, 一.图像平移 图像平移是将一幅图像中所有的点都按照指定的平

  • C++ opencv图像处理实现灰度变换示例

    目录 灰度变换概念 灰度变换的作用 灰度变换的方法 灰度化 灰度的概念 对彩色图进行灰度化 1.加权平均值法 2.取最大值 3.平均值 灰度的线性变换 1.线性变换 2.分段线性变换 灰度的非线性变换 1.对数变换 2.幂律变换 总结 灰度变换概念 在图像预处理中,图像的灰度变换是图像增强的重要手段,灰度变换可以使图像对比度扩展,图像清晰,特征明显,灰度变换主要利用点运算来修正像素灰度,由输入像素点的灰度值确定相应输出点的灰度值,是一种基于图像变换的操作. 灰度变换的作用 1.改善图像是质量,显

  • OpenCV图像处理之七种常用图像几何变换

    0 程序环境与所学函数 本章程序运行需要导入下面三个库,并定义了一个显示图像的函数 所学函数 ##放大.缩小 cv.resize(img,dsize,[interpolation]) ##平移变换 M = np.array([[...]], dtype=np.float32) cv.warpAffine(img, M, dsize) ##镜像变换 cv.flip(img, 1) # 垂直镜像 cv.flip(img, 0) # 水平镜像 cv.flit(img, -1) # 水平垂直同时进行 #

  • OpenCV图像几何变换之透视变换

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 1. 基本原理 透视变换(Perspective Transformation)的本质是将图像投影到一个新的视平面,其通用变换公式为: (u,v)为原始图像像素坐标,(x=x'/w',y=y'/w')为变换之后的图像像素坐标.透视变换矩阵图解如下: 仿射变换(Affine Transformation)可以理解为透视变换的特殊形式.透视变换的数学表达式为: 所以,给定透视变换对应的四对像素点坐标,即可求得透视变

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

    目录 边缘检测简介 一.边缘检测步骤 二.Canny 1.函数 2.代码 二.Sobel 1.函数 2.代码 三.Scharr 1.函数 2.代码 四.Laplacian 1.函数 2.代码 总结 边缘检测简介 边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点. 图像边缘检测大幅度地减少了数据量,并且剔除量不相关的信息,保留了图像重要的结构属性. 一.边缘检测步骤 1.图像获取 2.图像滤波 3.图像增强 4.图像检测 5.图像定位 二.Canny 1.

  • Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头

    一. 打印图片属性.设置图片存储路径 代码如下: #打印图片的属性.保存图片位置 import cv2 as cv import numpy as np #numpy是一个开源的Python科学计算库 def get_image_info(image): print(type(image)) #type() 函数如果只有第一个参数则返回对象的类型 在这里函数显示图片类型为 numpy类型的数组 print(image.shape) #图像矩阵的shape属性表示图像的大小,shape会返回tup

  • Opencv实现倾斜图片转正示例

    今天是我们来玩一个钉子.通过一个钉子来学习一个opencv中的一个函数,这个函数我网上也有搜过,不过遗憾的是,各路好手都是写的是有点不堪入目,现在这个学习氛围是越来越差了,很多人都直接复制粘贴别人的东西,自己也没有理解,也没有辨别是非的能力,所谓的拿来主义有时候真的是要不得的.知其然也要知其所以然.所以你很多时候遇到问题去网上搜索的时候,你会发现浏览器上面一排网页,好多内容都是相同,甚至是错的,这样很不好. 闲话不多说,我们今天通过一个实例来,讲解一个网上很多人都没搞清楚的函数cv2.minAr

  • python opencv图像处理基本操作示例详解

    目录 1.图像基本操作 ①读取图像 ②显示图像 ③视频读取 ④图像截取 ⑤颜色通道提取及还原 ⑥边界填充 ⑦数值计算 ⑧图像融合 2.阈值与平滑处理 ①设定阈值并对图像处理 ②图像平滑-均值滤波 ③图像平滑-方框滤波 ④图像平滑-高斯滤波 ⑤图像平滑-中值滤波 3.图像的形态学处理 ①腐蚀操作 ②膨胀操作 ③开运算和闭运算 4.图像梯度处理 ①梯度运算 ②礼帽与黑帽 ③图像的梯度处理 5.边缘检测 ①Canny边缘检测 1.图像基本操作 ①读取图像 ②显示图像 该函数中,name是显示窗口的名字

  • 基于python的opencv图像处理实现对斑马线的检测示例

    基本思路 斑马线检测通过opencv图像处理来进行灰度值转换.高斯滤波去噪.阈值处理.腐蚀和膨胀后对图像进行轮廓检测,通过判断车辆和行人的位置,以及他们之间的距离信息,当车速到超过一定阈值时并且与行人距离较近时,则会被判定车辆为未礼让行人. 结果示例 实验流程 先通过视频截取一张图片来进行测试,如果结果满意之后再嵌套到视频中,从而达到想要的效果. 1.预处理(灰度值转换.高斯滤波去噪.阈值处理.腐蚀和膨胀)> 根据自己的需求来修改一些值 #灰度值转换 imgGray = cv2.cvtColor

  • C++ opencv图像处理实现图像腐蚀和膨胀示例

    目录 1 概念 2 膨胀 3 腐蚀 1 概念 1.1 腐蚀跟膨胀是最基本的形态学运算 1.2 腐蚀跟膨胀是对图像的白色的部分(亮光部分)进行操作 1.3 腐蚀是对亮光部分进行腐蚀 拥有比原图更小的亮光部分 1.4 膨胀是对亮光部分进行膨胀 拥有比原图更大的亮光部分 这里有一个误区 假如说在图片上的一个字,很多人都会认为膨胀是将图片上的字进行膨胀放大实则不然 可以看到膨胀是将图片上的亮色区域进行放大,字就会变得更小,结构体够大的情况下,字就会看不见了** 可以看到腐蚀是将图片上的亮色区域进行放小,

  • 用OpenCV将视频分解成单帧图片,图片合成视频示例

    本文做的是基于opencv将视频帧转成图片输出,由于一个视频包含的帧数过多,经常我们并不是需要它的全部帧转成图片,因此我们希望可以设置每隔多少帧再转一次图片(本文设置为30帧),若有人需求是只需要前多少帧,也可以类似的改写下代码即可. 程序一: #include <iostream> #include "cv.h" #include "opencv2/opencv.hpp" using namespace std; using namespace cv;

  • Opencv图像处理:如何判断图片里某个颜色值占的比例

    一.功能 这里的需求是,判断摄像头有没有被物体遮挡.这里只考虑用手遮挡---->判断黑色颜色的范围. 二.使用OpenCV的Mat格式图片遍历图片 下面代码里,传入的图片的尺寸是640*480,判断黑色范围. /* 在图片里查找指定颜色的比例 */ int Widget::Mat_color_Find(QImage qimage) { Mat image = QImage2cvMat(qimage);//将图片加载进来 int num = 0;//记录颜色的像素点 float rate;//要计

  • Python+Opencv实现把图片、视频互转的示例

    1. 安装Opencv包 pip install opvencv-python 2.实现代码: 视频转为图片: import cv2 cap=cv2.VideoCapture('E:/video/video-02.mp4') # 获取一个视频打开cap isOpened=cap.isOpened # 判断是否打开 print(isOpened) fps=cap.get(cv2.CAP_PROP_FPS) print(fps) # 获取宽度 width=int(cap.get(cv2.CAP_PR

随机推荐