读取图像computer.jpg,运用Opencv+Python基于拉普拉斯算子,LoG算子,Canny算子等实现边缘检测并加以比较,显示结果图像
时间: 2024-10-22 20:09:53 浏览: 89
OpenCV2.4.9_基于LoG算子及自定义算子的图像边缘检测
当你想要在Python中使用OpenCV库处理"computer.jpg"这个图像,并通过拉普拉斯算子、LoG(Laplacian of Gaussian)算子和Canny算子进行边缘检测时,可以按照以下步骤操作:
首先,你需要安装OpenCV库,如果尚未安装,可以使用pip进行安装:
```bash
pip install opencv-python
```
然后,你可以使用下面的代码片段来读取图像、应用各种边缘检测算法,并显示结果:
```python
import cv2
import numpy as np
# 1. 读取图像
img = cv2.imread('computer.jpg', 0) # 以灰度模式读取,0表示只读取图像矩阵
if img is None:
print("Image not found.")
else:
# 2. 拉普拉斯算子
laplacian = cv2.Laplacian(img, cv2.CV_64F)
_, laplacian_edges = cv2.threshold(laplacian, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
# 3. LoG(高斯拉普拉斯算子)
kernel_size = 3 # 可调整大小
sigma = 1.5 # 高斯核的标准差
log = cv2.ximgproc.createLogDetector()
log.detect(img, dst=laplacian)
log_edges = cv2.Canny(laplacian, low_threshold=threshold_log_low, high_threshold=threshold_log_high)
# 4. Canny算子
canny = cv2.Canny(img, low_threshold=threshold_canny_low, high_threshold=threshold_canny_high)
# 显示结果
titles = ['Original Image', 'Laplacian Edges', 'LOG Edges', 'Canny Edges']
images = [img, laplacian_edges, log_edges, canny]
for i in range(4):
cv2.imshow(titles[i], images[i])
cv2.waitKey(0)
cv2.destroyAllWindows()
# 上面的阈值可以根据需要自定义,通常会设置两个阈值,如cv2.threshold()函数中的low_threshold和high_threshold。
阅读全文