OpenCV实现图像风格迁移(梵高星空)

 引言:

在计算机视觉和深度学习的世界中,有一项令人着迷的技术被广泛应用,它能够将一种独特的艺术风格嵌入到图像中,仿佛这幅图像是由大师亲自绘制的一样。这技术被称为图像迁移,它引领我们进入一个充满无限创意可能性的领域。通过图像迁移,我们可以将一幅艺术作品的独特风格融入到任何图像中,创造出令人叹为观止的作品,同时保留原图中的关键特征。

 话不多说直接上成果展示:

 获取fast-neural-style训练好的模型:

百度网盘 请输入提取码

这里下载starry_night.t7即可,其他模型也可以自行下载测试。

完整代码展示 

import cv2

image0=cv2.imread('./image2.jpg')
image=cv2.resize(image0,(640,500))

cv2.imshow('original',image)
cv2.waitKey(0)
'''图片预处理'''
H,W=image.shape[:2] #获取尺寸
blod=cv2.dnn.blobFromImage(image,1,(H,W),(0,0,0),swapRB=True,crop=False)

net=cv2.dnn.readNet('./starry_night.t7')
# net=cv2.dnn.readNet('./mosaic.t7')
# net=cv2.dnn.readNet('./the_scream.t7')
# net=cv2.dnn.readNet('./the_wave.t7')
# net=cv2.dnn.readNet('./udnie.t7')
# net=cv2.dnn.readNet('feathers.t7')
# net=cv2.dnn.readNet('./candy.t7')
# net=cv2.dnn.readNet('./composition_vii.t7')
# net=cv2.dnn.readNet('./la_muse.t7')

net.setInput(blod)
out=net.forward()
out_new = out.reshape(out.shape[1], out.shape[2],out.shape[3])#将输出进行加一化处理
cv2.normalize(out_new,out_new,norm_type=cv2.NORM_MINMAX)
result = out_new.transpose(1,2,0) #通道转换

cv2.imshow('result',result)
cv2.waitKey(0)
cv2.destroyAllWindows()

猜你喜欢

转载自blog.csdn.net/m0_74053536/article/details/134020276