# -- coding:utf-8 --
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
#读取原始图像
im = cv.imread('d:/paojie.png')
#设置鼠标左键开启
en = False
#鼠标事件
def draw(event, x, y, flags, param):
global en
#鼠标左键按下开启en值
if event==cv.EVENT_LBUTTONDOWN:
en = True
#鼠标左键按下并且移动
elif event==cv.EVENT_MOUSEMOVE and flags==cv.EVENT_LBUTTONDOWN:
#调用函数打马赛克
if en:
drawMask(y,x)
#鼠标左键弹起结束操作
elif event==cv.EVENT_LBUTTONUP:
en = False
#图像局部采样操作
def drawMask(x, y, size=20):
#size*size采样处理
m = x / size * size
n = y / size * size
print(m, n)
m = int(m)
n = int(n)
#10*10区域设置为同一像素值
for i in range(size):
for j in range(size):
im[m+i][n+j] = im[m][n]
#打开对话框
cv.namedWindow('image')
#调用draw函数设置鼠标操作
cv.setMouseCallback('image', draw)
#循环处理
while(1):
cv.imshow('image', im)
#按ESC键退出
if cv.waitKey(10)&0xFF==27:
break
#按s键保存图片
elif cv.waitKey(10)&0xFF==115:
cv.imwrite('sava.png', im)
#退出窗口
cv.destroyAllWindows()

程序运行过程中添加简单马赛克