canny算子使用示例
时间: 2023-09-21 22:04:58 浏览: 77
Canny算子是一种经典的边缘检测算法,以下是使用OpenCV库中的Canny函数进行边缘检测的示例代码。
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('test.jpg')
# 转为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 高斯模糊
blur = cv2.GaussianBlur(gray, (3, 3), 0)
# 边缘检测
edges = cv2.Canny(blur, 50, 150)
# 显示图像
cv2.imshow('Original image', img)
cv2.imshow('Canny edges', edges)
# 等待按下任意按键退出
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,首先使用cv2.imread()函数读取一张测试图像,并将其转换为灰度图像。接着,使用cv2.GaussianBlur()函数对图像进行高斯模糊,以平滑噪声和细节。然后,使用cv2.Canny()函数进行边缘检测,并指定阈值参数(50和150),用于确定边缘的强度和连续性。最后,使用cv2.imshow()函数显示原始图像和检测到的边缘,并使用cv2.waitKey()函数等待用户按下任意按键退出程序。
相关问题
canny算子边缘检测示例
好的,以下是Canny边缘检测的示例代码(使用OpenCV库):
``` python
import cv2
# 读取图像
img = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)
# 高斯滤波
img_blur = cv2.GaussianBlur(img, (5, 5), 0)
# Canny边缘检测
img_canny = cv2.Canny(img_blur, 100, 200)
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Canny Edge Detection', img_canny)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这个示例将打开名为“example.jpg”的图像文件,并对其进行Canny边缘检测。首先,图像被高斯滤波以去除噪声,然后使用Canny函数进行边缘检测。最后,显示原始图像和检测到的边缘。可以通过调整Canny函数的阈值参数来更改检测到的边缘的数量和质量。
使用canny算子锐化
Canny算子是一种常用的图像边缘检测算法,它可以将图像中的边缘提取出来。可以使用Canny算子来实现图像锐化,以下是一个简单的MATLAB代码示例:
```matlab
% 读取图像
img = imread('image.jpg');
% 使用Canny算子进行边缘检测
edge_img = edge(img, 'canny');
% 将边缘图像与原始图像相加,得到锐化后的图像
sharpened_img = imadd(img, edge_img);
% 显示原始图像和锐化后的图像
figure;
subplot(1,2,1);
imshow(img);
title('Original Image');
subplot(1,2,2);
imshow(sharpened_img);
title('Sharpened Image');
```
在代码中,我们首先读取图像,然后使用MATLAB中的`edge`函数来进行Canny边缘检测。接着,我们将边缘图像与原始图像相加,从而得到锐化后的图像。最后,我们使用MATLAB的`imshow`函数显示原始图像和锐化后的图像。
需要注意的是,使用Canny算子进行图像锐化时,可能会出现一些不需要的边缘。为了避免这种情况,可以调整Canny算子的参数,例如阈值等,来得到更好的效果。
阅读全文