OpenCV 边缘检测之Canny算法(代码应用)

article/2025/9/15 10:04:50

Canny算法

Canny是边缘检测算法,在1986年提出的。
是一个很好的边缘检测器
很常用也很实用的图像处理方法

Canny算法步骤

  1. 消除噪声:高斯模糊 - GaussianBlur
  2. 灰度转换 - cvtColor
  3. 计算梯度 – Sobel/Scharr
  4. 非最大信号抑制
  5. 高低阈值输出二值图像

API:

函数原型及参数

Canny(
InputArray src, // 8-bit的输入图像
OutputArray edges,// 输出边缘图像, 一般都是二值图像,背景是黑色
double threshold1,// 低阈值,常取高阈值的1/2或者1/3
double threshold2,// 高阈值
int aptertureSize,// Soble算子的size,通常3x3,取值3
bool L2gradient // 选择 true表示是L2来归一化,否则用L1归一化

代码案例:

在这里插入图片描述
在这里插入图片描述

#include<iostream>
#include<math.h>
#include<opencv2/opencv.hpp>
#include<opencv2/highgui.hpp>
#include <opencv2/highgui/highgui_c.h>  using namespace std;
using namespace cv;void Canny_demo(int, void*);Mat src, gray_src;
int max_range = 255;
int min_threshold = 20;int main()
{// 读取图片src = imread("./test2.jpg");if (!src.data){cout << "Could not load the image ...." << endl;return -1;}namedWindow("input_image", CV_WINDOW_AUTOSIZE);imshow("input_image", src);// 换为灰度图cvtColor(src, gray_src, CV_BGR2GRAY);imshow("gray_iamge", gray_src);// 使用trackbar调整阈值namedWindow("Output_window", CV_WINDOW_AUTOSIZE);createTrackbar("Canny_Tracker", "Output_window", &min_threshold, max_range, Canny_demo);Canny_demo(0, 0);waitKey(0);return 0;
}void Canny_demo(int, void *)
{Mat tmp_src, edge_output, dst;// 均值滤波blur(gray_src, tmp_src, Size(3, 3), Point(-1, -1), BORDER_DEFAULT);Canny(tmp_src, edge_output, min_threshold, min_threshold * 2, 3, false);imshow("canny_image", edge_output);		// 显示Canny二值化的图Mat tmp_src2(src);dst.create(src.size(), src.type());tmp_src2.copyTo(dst, edge_output);		// 将边缘与原图片重叠显示imshow("Output_window", dst);
}

http://chatgpt.dhexx.cn/article/ZZ6lICnV.shtml

相关文章

opencv边缘检测加提取(圆形和矩形)

因为加密了的原因&#xff0c;不好直接复制&#xff0c;大家看一下代码就好。

OpenCV之边缘检测

1.图片的高斯模糊 import cv2 import matplotlib.pyplot as pltimg cv2.imread(r"C:\Users\Curry\Desktop\goutou.png") gray cv2.cvtColor(img, codecv2.COLOR_BGR2GRAY) gray2 cv2.GaussianBlur(gray,(19,19),0) #高斯模糊 # canny cv2.Canny()cv2.imshow(gra…

OpenCV如何进行图像的边缘检测?OpenCV边缘检测操作流程

OpenCV提供了几种常见的图像边缘检测算法&#xff0c;包括Sobel算子、Scharr算子、Laplacian算子和Canny边缘检测算法。下面分别介绍这些算法及其实现方法。 Sobel算子 Sobel算子是一种常见的图像边缘检测算法&#xff0c;其原理是通过对图像进行卷积操作&#xff0c;计算出图像…

opencv-边缘检测

文章目录 一、Canny边缘检测1.1高斯滤波器2.1梯度和方向3.1非极大值抑制4.1双阈值检测 一、Canny边缘检测 Canny边缘检测器是一种被广泛使用的算法&#xff0c;并被认为是边缘检测最优的算法&#xff0c;该方法使用了比高斯差分算法更复杂的技巧&#xff0c;如多向灰度梯度和滞…

opencv边缘检测算子

实验三 边缘检测算子 一、 实验目的 利用opencv或其他工具编写实现下图的sobel算子和robert算子边缘检测 二、 实验过程 利用opencv python实现sobel算子和robert算子边缘检测 (1)在python安装opencv库 这个步骤我在第二个实验&#xff0c;图像滤波里写过了&#xff0c;就不…

OpenCV:边缘检测算法

边缘检测&#xff08;英语&#xff1a;Edge detection&#xff09;是图像处理和计算机视觉中的基本问题&#xff0c;边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。这些包括&#xff08;i&#xff09;深度上的不连续、…

opencv边缘检测 roberts算子

定义roberts两个算子 分别为135度 和45度。 [1,0, 0,-1] [0,1 -1,0] 这里展示在c实现的过程。先展示下效果图 分别是45度角 135度角和边缘效果图。 #include<opencv2/opencv.hpp> #include<opencv2/core/core.hpp> #include<opencv2/imgproc/imgproc.hpp> #…

基于QT+OpenCV边缘检测、面积检测

没什么好说的就是调库&#xff0c;直接看下效果图&#xff0c;&#xff0c;基于OPENC4.5.1&#xff0c;如需要请 原图&#xff1a; 对图形进行描边并进行标号 面积检测

【学习OpenCV4】OpenCV边缘检测算法总结

本文分享内容来自图书《学习OpenCV 4&#xff1a;基于Python的算法实战》&#xff0c;该书内容如下&#xff1a; 第1章 OpenCV快速入门&#xff1b; 第2章 图像读写模块imgcodecs&#xff1b; 第3章 核心库模块core&#xff1b; 第4章 图像处理模块imgproc&#xff08;一&…

Opencv边缘检测、轮廓发现、绘制轮廓

Opencv边缘检测、轮廓发现、绘制轮廓 提取图像轮廓的2个步骤 1、 findContours函数找轮廓&#xff0c; 2、 drawContours函数画轮廓 轮廓的查找——cv::findContours() 函数cv::findContour是从二值图像中来计算轮廓的&#xff0c;它可以使用cv::Canny()函数处理的图像&am…

基于Python的Opencv边缘检测

边缘检测实际上就是对图像进行系统的梯度计算&#xff0c;包含了图像的噪声处理&#xff0c;非极大值抑制&#xff0c;双阈值检测等一系列图像处理方式&#xff0c;通过这些方式处理图像后得到图像的轮廓。这些方式在之前的博客都已经提到过i了&#xff0c;而Opencv提供了一个非…

OpenCV 边缘检测

一. 实验内容 用OpenCV对图片进行边缘检测。 二. 实验代码 //边缘检测 class Task17 { public:void deal() {Mat src_img imread("img\\1.jpg");imshow("边缘检测[原图]", src_img);Mat gray_img;cvtColor(src_img, gray_img, COLOR_BGR2GRAY);Mat out…

java-opencv边缘检测

安装opencv 导入jar包需要dll jar包在opencv\build\java目录里&#xff0c;dll文件在opencv\build\java\64x目录里 边缘检测 package opencv;import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc…

python opencv边缘检测

通过Opencv进行边缘检测可以说是十分常见了&#xff0c;接下来让我们聊一聊如何通过python opencv一步一步实现边缘检测 重要函数讲解 图片读取函数: pic cv2.imread(file_path, flagNone) 参数&#xff1a; file_path:读取的图片的路径。这里要注意如果图像不能读取(由于…

python-opencv边缘检测

9.python-opencv边缘检测 第一章 python-opencv-图片导入和显示 第二章 python-opencv图像简单处理 第三章 python-opencv图像mask掩膜处理 第四章 python-opencv图像马赛克 第五章 python-opencv人脸马赛克 第六章 python-opencv人脸检测 第七章 python-opencv图像张贴 第八章…

opencv边缘检测

边缘检测的一般步骤 滤波 边缘检测的算法对噪声很敏感&#xff0c;所以采用滤波器来改善边缘检测器的性能。 增强 增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将图像灰度点邻域强度值有显著变化的点凸显出来。在具体编程实现时&#xff0c;可通过计算梯度…

14---OpenCV:图像检测之边缘检测

一、图像边缘 边缘(edge)是指图像局部强度变化最显著的部分。主要存在于目标与目标、目标与背景、区域与区域(包括不同色彩)之间&#xff0c;是图像分割、纹理特征和形状特征等图像分析的重要基础。图像强度的显著变化可分为&#xff1a; 阶跃变化函数&#xff0c;即图像强度在…

OpenCV学习11_边缘检测

本部分,我们将一起学习OpenCV中边缘检测的各种算子和滤波器-Canny算子、Sobel算子、Laplacian算子以及Scharr滤波器。 一、边缘检测步骤 在具体介绍之前,先来一起看看边缘检测的一般步骤。 1.【第一步】滤波 边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪…

opencv--边缘检测

opencv--边缘检测 1 边缘检测原理2 Sobel检测算子2.1 Sobel检测方法2.2 应用 3 Laplacian算子4. Canny边缘检测4.1 原理4.2应用 5 算子比较 1 边缘检测原理 边缘检测是图像处理和计算机视觉中的基本问题&#xff0c;边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性…

【OpenCV--边缘检测】

目录 一、边缘检测概念 二、Sobel算子 1.描述&#xff1a; 2.方法&#xff1a; 3.Sobel算子的应用&#xff1a; 三、Laplacian算子 1.描述&#xff1a; 2.应用&#xff1a; 四、Canny边缘检测 1.原理&#xff1a; 2.应用&#xff1a; 一、边缘检测概念 1.边缘检测是图像处理和…