您好,欢迎访问一九零五行业门户网

Python+OpenCV图像风格迁移的实现方法讲解

本篇文章给大家带来的内容是关于python+opencv图像风格迁移的实现方法讲解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
现在很多人都喜欢拍照(自拍)。有限的滤镜和装饰玩多了也会腻,所以就有 app 提供了 模仿名画风格 的功能,比如 prisma、versa 等,可以把你的照片变成 梵高、毕加索、蒙克 等大师的风格。
这种功能叫做“ 图像风格迁移 ”,几乎都是基于 cvpr 2015 的论文《 a neural algorithm of artistic style 》和 eccv 2016 的论文《 perceptual losses for real-time style transfer and super-resolution 》中提出的算法,以及后续相关研究的基础上开发出来的。
通俗来讲,就是借助于 神经网络 ,预先将名画中的风格训练成出模型,在将其应用在不同的照片上,生成新的风格化图像。
来自《a neural algorithm of artistic style》
而因为神经网络在计算机视觉方面的应用越来越广,著名的视觉开发库 opencv 在 3.3 版本中正式引入 dnn(深度神经网络) ,支持 caffe、tensorflow、torch/pytorch 等主流框架的模型,可用以实现图像的识别、检测、分类、分割、着色等功能。  
我最近才发现在 opencv 的 sample 代码中就有图像风格迁移的 python 示例(原谅我的后知后觉),是基于 eccv 2016 论文中的网络模型实现。所以,即使作为人工智能的菜鸟,也可以拿别人训练好的模型来玩一玩,体会下神经网络的奇妙。
(相关代码和模型的获取见文末)
opencv 官方代码地址: https://github.com/opencv/opencv/blob/3.4.0/samples/dnn/fast_neural_style.py
目录下通过执行命令运行代码:
python fast_neural_style.py --model starry_night.t7
model 参数是提供预先训练好的模型文件路径,opencv 没有提供下载,但给出的参考项目 https://github.com/jcjohnson/fast-neural-style 中可以找到
其他可设置参数有:
input 可以指定原始图片/视频,如果不提供就默认使用摄像头实时采集。
width、height,调整处理图像的大小,设置小一点可以提高计算速度。在我自己的电脑上,300x200 的转换视频可以达到 15 帧/秒。
median_filter 中值滤波的窗口大小,用来对结果图像进行平滑处理,这个对结果影响不大。
执行后的效果(取自 jcjohnson/fast-neural-style):
原始图像
eccv16 models
instance_norm models
核心代码其实很短,就是 加载模型 - > 读取图片 -> 进行计算 -> 输出图片,我在官方示例基础上进一步简化了一下:
import cv2# 加载模型net = cv2.dnn.readnetfromtorch('the_scream.t7')net.setpreferablebackend(cv2.dnn.dnn_backend_opencv);# 读取图片image = cv2.imread('test.jpg')(h, w) = image.shape[:2]blob = cv2.dnn.blobfromimage(image, 1.0, (w, h), (103.939, 116.779, 123.680), swaprb=false, crop=false)# 进行计算net.setinput(blob)out = net.forward()out = out.reshape(3, out.shape[2], out.shape[3])out[0] += 103.939out[1] += 116.779out[2] += 123.68out /= 255out = out.transpose(1, 2, 0)# 输出图片cv2.imshow('styled image', out)cv2.waitkey(0)
另外还改了个多效果实时对比的版本(计算量大了,很卡顿),也一并上传在代码中。
ps:前两天看赵雷演唱会的时候我还说:他演唱会的背景 mv 大量使用了 图像二值化、边缘检测 等操作,让我想到以前数字图像处理课的大作业……现在图像风格迁移的效率达到了实时,想必以后也会经常被使用吧。
以上就是python+opencv图像风格迁移的实现方法讲解的详细内容。
其它类似信息

推荐信息