操作原理:在特定区域(默认9*9)内,以第一个像素值进行渲染,这样处理后的图片形态上像原图片,但已经均衡处理掉一些数值。
import cv2
import numpy as np
#默认在9*9区域选第一个像素值进行统一渲染
def mosaic(img,neighbor = 9):
fh,fw = img.shape[0],img.shape[1]
img_copy = np.copy(img)
for i in range(0,fh - neighbor ,neighbor):
for j in range(0,fw - neighbor,neighbor):
color = img_copy[i][j].tolist()
left_up = (j,i)
right_down = (j + neighbor - 1,i + neighbor -1)
cv2.rectangle(img_copy,left_up,right_down,color,-1) #渲染
return img_copy
if __name__ == '__main__' :
img = cv2.imread('yiqi.jpg',1)
mosaic = mosaic(img,neighbor=5)
cv2.imshow('img',img)
cv2.imshow('mosaic',mosaic)
cv2.waitKey()
cv2.destroyAllWindows()
效果图:
