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

时间: 2022-05-11

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中几种基本的图像处理方式

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

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

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

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

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

python使用opencv读取图片的实例

安装好环境后,开始了第一个Hello word 例子,如何读取图片,保存图品 import cv2 import numpy as np import matplotlib.pyplot as plt #读取图片代码 img = cv2.imread('test.jpg',cv2.IMREAD_GRAYSCALE) #IMREAD_COLOR = 1 #IMREAD_UNCHANGED = -1 #展示图片 cv2.imshow('image',img) cv2.waitKey(0) cv2.d

python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法

如下所示: #coding=utf-8 #读取图片 返回图片某像素点的b,g,r值 import cv2 import numpy as np img=cv2.imread('./o.jpg') px=img[10,10] print px blue=img[10,10,0] print blue green=img[10,10,1] print blue red=img[10,10,2] print blue 以上这篇python opencv 读取图片 返回图片某像素点的b,g,r值的实现方

asp.net mvc 从数据库中读取图片的实现代码

首先是创建一个类,继承于ActionResult,记住要引用System.Web.Mvc命名空间,如下: 复制代码 代码如下: public class ImageResult : ActionResult { public ImageFormat ContentType { get; set; } public Image image { get; set; } public string SourceName { get; set; } public ImageResult(string _

C++ opencv ffmpeg图片序列化实现代码解析

0.如果路径中存在空格,用""把路径包括起来 1.使用ffmpeg命令 ffmpeg -y -framerate 10 -start_number 1 -i E:\Image\Image_%d.bmp E:\test.mp4 -y 表示输出时覆盖输出目录已存在的同名文件 -framerate 10 表示视频帧率 -start_number 1 表示图片序号从1开始 -i E:\Image\Image_%d.bmp 表示图片输入流格式 2.c++ 实现 ffmpeg命令 2.1.syst

C#通过XML节点属性/属性值读取写入XML操作代码实例

1.XML的内容如下: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8" ?><root>  <title>    <settings id = "0" name = "显示文字">欢迎您!智慧服务,互动体验......</settings>    <settings id = "1" name

Python读取图片为16进制表示简单代码

本文主要研究的是python读取jpg格式图片并显示为16进制的相关内容,具体如下. 代码: >>> aaa = open('C:\Users\Administrator\Desktop\java\watermarkphoto/2018119110506012.png','rb') >>> aaa.read() 读取的原图: 显示效果: 总结 一开始读取的图片稍微有点大,idle直接卡死,后来截取了一个小的图片,很快就显示出来. 以上就是本文关于Python读取图片为1

python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结

在处理图像的时候经常是读取图片以后把图片转换为灰度图.作为一个刚入坑的小白,我在这篇博客记录了四种处理的方法. 首先导入包: import numpy as np import cv2 import tensorflow as tf from PIL import Image 方法一:在使用OpenCV读取图片的同时将图片转换为灰度图: img = cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE) print("cv2.imread(imgfile, cv2.I

Python实现批量读取图片并存入mongodb数据库的方法示例

本文实例讲述了Python实现批量读取图片并存入mongodb数据库的方法.分享给大家供大家参考,具体如下: 我的图片放在E:\image\中,然后使用python将图片读取然后,显示一张,存入取一张(可以注释掉显示图片的语句),通过Gridfs的方式存入图片.代码如下: # --* coding=utf-8 *-- from cStringIO import StringIO from pymongo import MongoClient import gridfs import os imp

python opencv将图片转为灰度图的方法示例

使用opencv将图片转为灰度图主要有两种方法,第一种是将彩色图转为灰度图,第二种是在使用OpenCV读取图片的时候直接读取为灰度图. 将彩色图转为灰度图 import cv2 import numpy as np if __name__ == "__main__": img_path = "timg.jpg" img = cv2.imread(img_path) #获取图片的宽和高 width,height = img.shape[:2][::-1] #将图片缩小

tensorflow如何批量读取图片

本文实例为大家分享了tensorflow如何批量读取图片的具体代码,供大家参考,具体内容如下 代码: import tensorflow as tf import os def picread(filelist): """ 读取狗的图片并转换成张量 :param filelist: 文件路f径+名字的列表 :return: 每张图片的张量 """ # 1.构造文件的队列 file_queue = tf.train.string_input_pro