前言
手动实现马赛克和毛玻璃效果,原图片如下:
马赛克效果
import cv2
import numpy as np
img = cv2.imread('image0.jpg', 1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
# 在height 50 - 100 width 100 - 200 上 打码
# 在 10 * 10 的方格内,选取一个像素,进行填充
k = 0
for m in range(100, 200):
for n in range(100,250):
if m%10 == 0 and n%10 == 0:
for i in range(10):
for j in range(10):
(b, g, r) = img[m, n]
img[i + m, j + n] = (b, g, r)
cv2.imshow('image', img)
cv2.waitKey(0)
在图片中的某一块区域,打上马赛克,马赛克的算法就是在N个小块儿区域内(比如有很多个10 * 10小块儿),使用一个随机的像素值,代替其他像素值.效果如下:
毛玻璃效果
import cv2
import numpy as np
import random
img = cv2.imread('image0.jpg', 1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
dst = np.zeros([height, width, 3], np.uint8)
mm = 8
for m in range(height - mm):
for n in range(width - mm):
index = int(random.random() * 8)
(b, g, r) = img[m+index, n+index]
dst[m, n] = (b, g, r)
cv2.imshow('image', dst)
cv2.waitKey(0)
毛玻璃的算法和马赛克的算法有异曲同工之妙.毛玻璃是通过在某一个区域内随机选择一个像素点,用来代替当前像素点的做法,实现一个类似毛玻璃的效果.效果图如下: