高斯模糊:简单中的大智慧

理论讲完了,咱们来动手试试!用Python实现高斯模糊就像做一道简单的家常菜,只需要准备两个"食材":

OpenCV库:负责读取、显示和处理图像(相当于你的菜刀和菜板)

NumPy库:负责数值计算(相当于你的调料勺)

如果你还没有这些库,可以先在终端里输入这行命令安装:

pip install opencv-python numpy

然后复制下面这段代码,保存为gaussian_blur.py,运行后就能看到高斯模糊的效果啦!

// 导入需要的库

import cv2

import numpy as np

import matplotlib.pyplot as plt

# 读取彩色图像

color_image = cv2.imread('images/color_image.jpg')

# 转换为RGB格式(因为OpenCV默认读取的是BGR格式)

rgb_image = cv2.cvtColor(color_image, cv2.COLOR_BGR2RGB)

# 方法1:使用OpenCV内置函数实现高斯模糊

# 参数说明:(7,7)是高斯核的大小,1.5是标准差σ

blur_image_7 = cv2.GaussianBlur(rgb_image, (7, 7), 1.5)

# 尝试不同大小的高斯核

blur_image_15 = cv2.GaussianBlur(rgb_image, (15, 15), 2.0)

# 方法2:手动实现简单的高斯模糊(仅作演示,实际应用中推荐使用OpenCV内置函数)

def simple_gaussian_blur(image, kernel_size=3, sigma=1.0):

# 创建简单的高斯核(近似)

kernel = np.ones((kernel_size, kernel_size), np.float32) / (kernel_size * kernel_size)

# 应用卷积操作

blurred = cv2.filter2D(image, -1, kernel)

return blurred

# 手动实现的高斯模糊(效果不如OpenCV内置函数)

manual_blur = simple_gaussian_blur(rgb_image)

# 显示原图和不同方法得到的模糊图

plt.figure(figsize=(18, 5))

plt.subplot(141)

plt.imshow(rgb_image)

plt.title('彩色原图')

plt.axis('off')

plt.subplot(142)

plt.imshow(manual_blur)

plt.title('手动实现简单模糊')

plt.axis('off')

plt.subplot(143)

plt.imshow(blur_image_7)

plt.title('OpenCV高斯模糊 (7×7)')

plt.axis('off')

plt.subplot(144)

plt.imshow(blur_image_15)

plt.title('OpenCV高斯模糊 (15×15)')

plt.axis('off')

plt.tight_layout()

plt.show()

# 保存模糊后的图像

cv2.imwrite('images/blur_image.jpg', cv2.cvtColor(blur_image_7, cv2.COLOR_RGB2BGR))

print('模糊图像已保存!')

💡 小技巧:高斯核的大小和标准差σ是影响模糊效果的两个关键参数。核越大、σ越大,模糊效果越明显。就像磨皮时,强度调得越高,皮肤看起来越光滑,但也可能丢失一些细节。

开鑫贷和陆金所哪个好? [岘港完整版] 享受越南隐秘的海滩度假胜地!
top