💻 源代码
import cv2
# 加载图片
image = cv2.imread("./photo.jpg")
cv2.namedWindow('image')
def draw_mosaic(event, x, y, flags, param):
"""鼠标回调函数"""
if event == cv2.EVENT_LBUTTONDOWN:
# 点击处添加马赛克
apply_mosaic(x, y, size=20)
def apply_mosaic(x, y, size=20):
"""应用马赛克效果"""
for i in range(size):
for j in range(size):
if 0 <= x+i < image.shape[0] and 0 <= y+j < image.shape[1]:
image[x+i][y+j] = image[x][y]
# 设置鼠标回调
cv2.setMouseCallback('image', draw_mosaic)
# 显示窗口
while True:
cv2.imshow('image', image)
if cv2.waitKey(20) & 0xFF == 27: # ESC退出
break
cv2.destroyAllWindows()