OpenCV入门(19):图片的油画特效

import cv2
import numpy as np

img = cv2.imread("./mm1.jpg",1)
cv2.imshow("src",img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]

# 油画特效:1.gray  2.分图片为若干个小方块:例:8*8  3.将0-255划分为几个等级,并映射到小方块内(灰度等级的划分
# 4.灰度段中的像素的个数统计  5.用统计出来的平均值替换原来的像素值
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
dst = np.zeros((height,width,3),np.uint8)
for i in range(4,height-4):
    for j in range(4,width-4):
        array1 = np.zeros(8,np.uint8)# 8个灰度等级
        for m in range(-4,4):
            for n in range(-4,4):
                p1 = int(gray[i+m,j+n]/32)
                array1[p1] = array1[p1]+1
                currentMax = array1[0]
                l = 0
                for k in range(0,8):
                    if currentMax < array1[k]:
                        currentMax = array1[k]
                        l = k
                # 简化 均值
                for m in range(-4,4):
                    for n in range(-4,4):
                        if gray[i+m,j+n] >= (1*32) and gray[i+m,j+n] <= (1+1)*32:
                            (b,g,r) = img[i+m,j+n]
                dst[i,j] = (b,g,r)

cv2.imshow("dst",dst)
cv2.waitKey(0)

你可能感兴趣的:(OpenCV)