python,如何实现图片中特定区域模糊?

比如说我要模糊一张图片中下边三个区域,如何用代码实现呢,有没有什么参考资料,网络上没有找到。
注:每一行为该区域四个端点坐标,区域均为正常的长方形
[[[686.0, 563.0], [812.0, 576.0], [810.0, 598.0], [683.0, 585.0]],
[[539.0, 687.0], [658.0, 684.0], [659.0, 721.0], [540.0, 725.0]],
[[972.0, 943.0], [1125.0, 947.0], [1124.0, 967.0], [972.0, 963.0]]]

使用Python可以很方便地实现图片中特定区域的模糊。下面是一个简单的示例代码,可以实现对图片中指定区域的高斯模糊:

import cv2
# 读取图片
img = cv2.imread('test.jpg')
# 指定模糊区域
x, y, w, h = 100, 100, 200, 200
roi = img[y:y+h, x:x+w]
# 对模糊区域进行高斯模糊
blur = cv2.GaussianBlur(roi, (25, 25), 0)
# 将模糊后的区域复制回原图
img[y:y+h, x:x+w] = blur
# 显示结果
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
在这段代码中,我们首先使用OpenCV库读取了一张图片。然后,我们指定了一个矩形区域,该区域的左上角坐标为(x, y),宽度为w,高度为h。接着,我们使用cv2.GaussianBlur函数对该区域进行高斯模糊,模糊半径为(25, 25)。最后,我们将模糊后的区域复制回原图,并显示结果。
需要注意的是,这段代码中的模糊区域是一个矩形,如果需要对任意形状的区域进行模糊,可以使用掩模(mask)来实现。具体实现方法可以参考OpenCV官方文档。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-06-19
要模糊一张图片中的指定区域,您可以使用图像处理库来实现。下面是使用Python示例代码:
import cv2

import numpy as np

# 读取原始图片

img = cv2.imread('your_image.jpg')

# 模糊指定区域

# 假设矩形区域坐标存储在rectangles列表中

rectangles = [[[686.0, 563.0], [812.0, 576.0], [810.0, 598.0], [683.0, 585.0]],
[[539.0, 687.0], [658.0, 684.0], [659.0, 721.0], [540.0, 725.0]],
[[972.0, 943.0], [1125.0, 947.0], [1124.0, 967.0], [972.0, 963.0]]]
for rect in rectangles:

# 将坐标转换为整型

rect = np.array(rect, dtype=np.int32)

# 提取矩形区域

region = img[rect[1][1]:rect[2][1], rect[0][0]:rect[1][0]]

# 进行模糊处理

blurred = cv2.GaussianBlur(region, (51, 51), 0) # 调整高斯核的大小

# 将处理后的区域重新放回原图

img[rect[1][1]:rect[2][1], rect[0][0]:rect[1][0]] = blurred

# 显示处理后的图像
cv2.imshow('Blurred Image', img)

cv2.waitKey(0)

cv2.destroyAllWindows()

注意,上述代码中假设图像文件名为'your_image.jpg'。您需要将其替换为实际的图像文件名。此外,上述代码使用了高斯模糊技术进行模糊处理,可以根据需要调整高斯核的大小来改变模糊程度。
希望这可以帮助到您。
相似回答