import cv2
import numpy as np
image=cv2.imread("C:/Users/xpp/Desktop/Lena.png")
cv2.imshow("original",image)
gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
gray=cv2.medianBlur(gray,7)
edges=cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,9,10)
color=cv2.bilateralFilter(image,1,250,250)
cartoon=cv2.bitwise_and(color,color,mask=edges)#与运算
cv2.imshow("cartoon",cartoon)
grayImage=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
grayImage=cv2.GaussianBlur(grayImage,(3,3),0)#高斯滤波
edgeImage=cv2.Laplacian(grayImage,-1,ksize=5)#边缘监测
edgeImage=255-edgeImage
ret,edgeImage=cv2.threshold(edgeImage,150,255,cv2.THRESH_BINARY)#将灰度图片转换为二值图片
edgePreservingImage=cv2.edgePreservingFilter(image,flags=2,sigma_s=50,sigma_r=0.4)#模糊图像
output=np.zeros(grayImage.shape)
output=cv2.bitwise_and(edgePreservingImage,edgePreservingImage,mask=edgeImage)#与运算
cv2.imshow("dim", output)
cartoon_image=cv2.stylization(image,sigma_s=150,sigma_r=0.6) #图像风格化
cv2.imshow("result",cartoon_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
算法:复古风格图像是首先找到图像的边缘,并使用双边滤波器和位操作符制作图像,接着用一个边缘保持滤波器来模糊图像,并在边缘上加入一个阈值,最后运用风格化的手法,创造出形象的复古效果。
文献:徐文华, 魏宝刚, & 潘云鹤. (2003). 基于纹理合成的图像艺术风格学习. 武汉大学学报:工学版, 36(3), 5.
本文分享自 图像处理与模式识别研究所 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!