用OpenCV实现照片风格迁移

用OpenCV实现照片风格迁移

环境配置

安装opencv资源库

  1. 在pycharm中直接下载
    文件->设置->python编译器
    (本人英语菜,这里我安装了汉化插件,所以都是中文)在这里插入图片描述
    输入opencv-python,点击下载即可
    在这里插入图片描述
  2. 安装numpy
    在这里插入图片描述
    同样的方式重复一篇

模型收集

此次选择的照片风格有世界名画爱德华·蒙克的呐喊,梵高的星空,以及波浪,糖果,马赛克等其他风格的照片。我们可以直接下载训练好的模型库,下面给出链接⏬:
http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//instance_norm/candy.t7
http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//instance_norm/la_muse.t7
http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//instance_norm/mosaic.t7
http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//instance_norm/feathers.t7
http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//instance_norm/the_scream.t7
http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//instance_norm/udnie.t7
http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//eccv16/the_wave.t7
http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//eccv16/starry_night.t7
http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//eccv16/composition_vii.t7

编写代码

import cv2
# 加载模型
net = cv2.dnn.readNetFromTorch('.\.t7')#选择一个模型的地址
net.setPreferableBackend(cv2.dnn.DNN_BACKEND_OPENCV)#创建后端
# 读取图片
image = cv2.imread('.\.jpg')#输入图片地址
(h, w) = image.shape[:2]
blob = cv2.dnn.blobFromImage(image, 1, (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.939
out[1]+= 116.779
out[2]+= 123.68
out /= 255
out = out.transpose(1, 2, 0)
# 输出图片
cv2.imshow('image',image)
cv2.imshow('Styled image', out)
cv2.waitKey(0)

第六行填写想要转换风格的照片
点击运行就能完成了!

常见的问题

  1. 无法读取文件
    路径要用\间隔不能输入错误
    路径里面不能含有中文!
  2. 出现无法加载文件
    问题:在pycharm终端出现报错:无法加载文件\venv\Scripts\activate.ps1,因为在此系统上禁止运行脚本。
    在这里插入图片描述

解决方法:

1、pycharm终端输入: get-executionpolicy,回车返回Restricted。
2、管理员身份运行Windows Powershall,输入set-executionpolicy remotesigned,回车,输入Y。
3、pycharm终端输入:get-executionpolicy,回车返回remotesigned。
4、pycharm终端输入:.\venv\Scripts\activate.ps1,回车,问题解决

优化部分

在实际操作过程中可能出现图片展示不全的情况,可以输入以下代码来使照片自适应

cv2.namedWindow("image",cv2.WINDOW_NORMAL )
cv2.namedWindow("Styled image",cv2.WINDOW_NORMAL )

希望能对大家有所帮助。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值