如何在OpenCV Python中为图像绘制模糊圆形?
在OpenCV中绘制带模糊效果的圆形
当然可以实现带模糊效果的圆形绘制,下面提供两种实用的实现方案,基于你给出的基础代码修改:
方案1:临时画布绘制+模糊融合
先在独立的临时画布上绘制实心圆,对圆进行模糊处理后,再将其融合到原始图像中,这种方法能精准控制圆形的模糊范围和颜色:
import cv2 import numpy as np # 加载原始图像(替换为你的图像路径) img = cv2.imread("your_image_path.jpg") center = (150, 150) # 自定义圆心坐标 radius = 20 color = (0, 255, 0) # 圆形颜色(BGR格式) # 创建与原图尺寸一致的空白临时画布 temp_canvas = np.zeros_like(img) # 在临时画布上绘制实心圆 cv2.circle(temp_canvas, center, radius, color, -1) # 对临时画布上的圆做高斯模糊,ksize为奇数,数值越大模糊越强 blurred_circle = cv2.GaussianBlur(temp_canvas, (21, 21), 0) # 将模糊后的圆融合到原图,通过调整权重控制透明度与颜色强度 img = cv2.addWeighted(img, 1.0, blurred_circle, 0.7, 0) # 预览结果 cv2.imshow("Blurred Circle", img) cv2.waitKey(0) cv2.destroyAllWindows()
方案2:局部模糊+掩码控制
如果需要让圆形区域呈现"模糊背景+叠加颜色"的效果,可以用掩码实现局部模糊:
import cv2 import numpy as np img = cv2.imread("your_image_path.jpg") center = (150, 150) radius = 20 color = (0, 255, 0) # 创建圆形掩码 mask = np.zeros(img.shape[:2], dtype=np.uint8) cv2.circle(mask, center, radius, 255, -1) # 对整张图像做模糊处理 blurred_bg = cv2.GaussianBlur(img, (21, 21), 0) # 给模糊后的区域叠加指定颜色 colored_blurred_area = cv2.addWeighted(blurred_bg, 0.6, np.full_like(img, color), 0.4, 0) # 通过掩码合并图像:掩码区域用带颜色的模糊效果,其余保留原图 result = np.where(mask[..., np.newaxis] == 255, colored_blurred_area, img) cv2.imshow("Blurred Colored Circle", result) cv2.waitKey(0) cv2.destroyAllWindows()
参数调整提示
- 高斯模糊的
ksize必须是奇数,比如(9,9)、(21,21),数值越大模糊程度越高 addWeighted中的权重参数(示例里的0.7、0.4)可以调整模糊圆的透明度和颜色深浅- 如果需要更柔和的边缘,可以对掩码先做一次模糊处理
内容的提问来源于stack exchange,提问作者rizla96
相关产品推荐
相关产品推荐

