基于cms设计网站的背景意义,百度一键安装,把静态图片做成动态图片的软件,做网站获流量利用OpenCVpython对图片进行处理产生油画的效果
算法可以分为五步#xff1a;
1、获取图像的灰度(gray)图片2、设计一个小方框#xff08;4x4 or 8x8 or 10x10等#xff09;#xff0c;统计每个小方框的像素值3、将0-255的灰度值划分成几个等级#xff0c;并把第二步处理…利用OpenCVpython对图片进行处理产生油画的效果
算法可以分为五步
1、获取图像的灰度(gray)图片2、设计一个小方框4x4 or 8x8 or 10x10等统计每个小方框的像素值3、将0-255的灰度值划分成几个等级并把第二步处理的结果映射到所设置的各个等级中并计数4、找到每个方框中灰度等级最多的所有的像素并且求取这些像素的均值5、用统计出来的平均值来替代原来的像素值因为用了很多for循环 所以计算复杂图像处理运行时间较长可以选用尺寸较小的图片来进行测试程序还有很多可以优化的地方再配合一些修图工具如PS对图片的细节进行修补感觉可以裱起来了。 import cv2
import numpy as npimg cv2.imread(image5.jpg, 1)
imgInfo img.shape
height imgInfo[0]
width imgInfo[1]
gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
dst np.zeros((height, width, 3), np.uint8)
pixel_class 4
section int(256/pixel_class)
# 用两层for循环来遍历图片的每个数据
for i in range(3, height-3):for j in range(3, width-3):# 当前程序中定义的灰度等级是4个# 定义一个数组来装载这4个等级内的像素个数array1 np.zeros(pixel_class, np.uint8)# 当前程序中定义的小方块是6x6的for m in range(-3, 3):for n in range(-3, 3):# p1是对该像素点等级段的划分用下标表示0-3p1 int(gray[im, jn]/section)# 接下来对像素等级进行计数array1的下标代表像素等级# 值则代表处在该像素等级小方框内像素的个数array1[p1] array1[p1] 1# 接下来判断在这个小方框内哪一个像素段的像素最多currentMax array1[0]l 0 # 这里设置一个l用来记录像素段计数最多的数组下标for k in range(0, pixel_class):if currentMax array1[k]:currentMax array1[k]l k# 均值处理u v w 0for m in range(-3, 3):for n in range(-3, 3):if gray[im,jn] (l*section) and gray[im, jn] ((l1)*section):(b, g, r) img[im, jn]u bv gw ru int(u/array1[l])v int(v/array1[l])w int(w/array1[l])dst[i, j] [u, v, w]
cv2.imshow(dst, dst)
cv2.imshow(img, img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite(oil_painting.png, dst)