AI分割迁移绘画-neural-style

 🏡 个人主页:IT贫道-CSDN博客

 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~

 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频


目录

1. 二值化展示图像代码

2. 安装Anconda3

3. 安装Python3

4. 安装依赖

5. 下载项目

6. 下载模型

7.添加GPU运行需要的dll文件

8. 运行项目


1. 二值化展示图像代码

# encoding=gbk
import cv2# __author__ = "WSX"
# 1.读取图片
img = cv2.imread("img3.jpg")
#显示图像,第一个参数是窗口名称,第二个是读取的图片
cv2.imshow("girl", img)temp = img.copy()
#做2次缩放
for i in range(3):dst = cv2.pyrDown( temp )temp = dst.copy()#将缩放的图像做成灰度图
gray = cv2.cvtColor(temp , cv2.COLOR_BGR2GRAY)#将灰度图变成二值化图像
# cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C, dst=None)
# src:需要进行二值化的一张灰度图像
# maxValue: 满足条件的像素点需要设置的最大灰度值。(将要设置的灰度值最大值,255是白色)
# adaptiveMethod:自适应阈值算法。可选ADAPTIVE_THRESH_MEAN_C 或 ADAPTIVE_THRESH_GAUSSIAN_C
# thresholdType:opencv提供的二值化方法,只能THRESH_BINARY或者THRESH_BINARY_INV
# blockSize:要分成的区域大小,把图片每个像素点作为中心取N*N的区域,然后计算这个区域的阈值,来决定这个像素点变0还是变255,一般取奇数
# C:常数,每个区域计算出的阈值的基础上在减去这个常数作为这个区域的最终阈值,可以为负数
binary = cv2.adaptiveThreshold( gray ,255 , cv2.ADAPTIVE_THRESH_GAUSSIAN_C , cv2.THRESH_BINARY, 25 , 10)#显示二值转换后的图像
cv2.imshow("binary", binary)#获取二值转换后图像的长和宽
w,h = binary.shape
print(binary)
print(w,h)#初始化文件
with open("result1.txt", "w") as f:f.write("")f.close()#向文件中写入数据,如果是0 则是黑色,如果是255 则是白色
with open("result1.txt","r+") as f:for i in range(w):for j in range(h):if binary[i,j] == 0:temp = "●"elif binary[i,j] == 255:temp = "○"f.write(temp)f.write("\r\n")f.close()#显示图像必须调用一下两个方法
#cv2.waitKey(0): 是一个和键盘绑定的函数,它的作用是等待一个键盘的输入(因为我们创建的图片窗口如果没有这个函数的话会闪一下就消失了,
# 所以如果需要让它持久输出,我们可以使用该函数)。它的参数是毫秒级。该函数等待任何键盘事件的指定毫秒。如果您在此期间按下任何键,
# 程序将继续进行。我们也可以将其设置为一个特定的键。
cv2.waitKey(0)

​​​​​​​2. 安装Anconda3

Anaconda是一个开源的Python发行版本,python是一个编译器,如果不使用Anaconda那么安装起来会比较痛苦,各个库之间的依赖性就很难连接的很好。Anaconda可以看做Python的一个集成安装,里面集成了很多关于python科学计算的第三方库,安装它后就默认安装了python、IPython、集成开发环境Spyder和众多的包和模块,包含了conda(conda 是开源包(packages)和虚拟环境(environment)的管理系统。)、Python等180多个科学包及其依赖项。因为包含了大量的科学包,Anaconda 的下载文件比较大,大概几百兆左右,如果只需要某些包,或者需要节省带宽或存储空间,也可以使用Miniconda这个较小的发行版(仅包含conda和 Python)。

我们可以从Anaconda官网 Anaconda | The World’s Most Popular Data Science Platform 下载Anaconda,一般官网下载比较慢,可以选择使用镜像下载,地址如下:

Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

现在之后直接双击安装即可,注意安装路径中不要有中文和空格。安装完成之后,配置环境变量,如下图:

配置完成之后,打开CMD命令窗口输入:conda,验证是否安装成功:

​​​​​​​3. 安装Python3

基于Anconda安装Python3,修复老照片这里安装python使用至少python3.6版本。命令如下:

#安装python环境
conda create --name python37_style python=3.7
#卸载python环境
conda remove --name python37_style --all

4. 安装依赖

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Pillow
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scipy==1.1
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==1.15.0
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-estimator==1.15.1

5. 下载项目

项目下载地址:https://github.com/anishathalye/neural-style,直接下载就可以,下载好的项目名字为“neural-style-master”,将下载项目解压到无中文路径中,这里放在J盘下:

6. 下载模型

http://www.vlfeat.org/matconvnet/models/beta16/imagenet-vgg-verydeep-19.mat网站下载VGG 训练好的模型,将下载好的“imagenet-vgg-verydeep-19.mat”文件放在项目“neural-style-master”目录中

7.添加GPU运行需要的dll文件

将dll目录下的5个dll文件复制到“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\bin”目录中,不出意外,应该不需要替换任何文件,如有替换,现将之前的dll拷贝出来,以防万一有问题可以回退。

以上5个dll文件时tensorflow1.x版本使用以来的dll文件。现在大多都是使用tensorflow2.x版本,此风格迁移项目使用的是tensorflow1.x版本,所以需要拷贝支持tensorflow1.x版本的dll文件。

​​​​​​​8. 运行项目

1) 将要处理的图片放在input目录中

需要在“neural-style-master”项目中创建对应的input目录,将要处理的图片放在input目录下

2) 将处理后的图片放在output目录中

需要在“neural-style-master”项目中创建对应的output目录,将要处理后的风格图片放在output目录下

3) 进入“neural-style-master”目录下执行命令

#切换python环境conda activate python37_style#执行如下命令转化图片,--content 指定输入的图片,--style指定风格图片 ,--output 指定处理后的风格图片python   neural_style.py   --content  ./input/img1.jpg --styles  ./examples/1-style.jpg --output  ./output/img1.jpg

此外:项目改变的东西如下:

还有一个是:cusolver64_100.dll,路径:“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\bin”


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/615413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker、docker-compose 离线安装、shell脚本一键安装、卸载

注:二进制包,与脚本在同级目录 docker 离线安装: 包下载:https://download.docker.com/linux/static/stable/x86_64/ docker_install.sh: #!/bin/bash# 指定 Docker 版本和文件名 DOCKER_VERSION"24.0.7" D…

电位器

一、电位器简介 电位器是一种可调的电子元件。它是由一个电阻体和一个转动或滑动系统组成。当电阻体的两个固定触电之间外加一个电压时,通过转动或滑动系统改变触点在电阻体上的位置,在动触点与固定触点之间便可得到一个与动触点位置成一定关系的电压。…

如何将Redis、Zookeeper、Nacos配置为Windows系统的一个服务

说明:当我们在Windows上开发时,不可避免的会用到一些中间件,如Redis、Zookeeper、Nacos等等,当在项目中使用到本地的这些服务器时,我们需要把本地的服务器启动,会开启下面这样的一个窗口。 Redis服务器&am…

uniapp中uview组件库丰富的CountTo 数字滚动使用方法

目录 #平台差异说明 #基本使用 #设置滚动相关参数 #是否显示小数位 #千分位分隔符 #滚动执行的时机 #API #Props #Methods #Event 该组件一般用于需要滚动数字到某一个值的场景,目标要求是一个递增的值。 注意 如果给组件的父元素设置text-align: cente…

C++力扣题目112,113--路径总和,路径总和II

112路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 是…

以太网交换机——稳定安全,构筑数据之桥

交换机,起源于集线器和网桥等网络通信设备,它在性能和功能上有了很大的发展,因此逐渐成为搭建网络环境的常用的设备。 随着ChatGPT爆发,因为用户量激增而宕机事件频频发生,云计算应用催生超大规模算力需求,…

java通过okhttp方式实现https请求的工具类(绕过证书验证)

目录 一、引入依赖包二、okhttp方式实现的https请求工具类2.1、跳过证书配置类2.2、okhttp方式的 https工具类 三、测试类 一、引入依赖包 引入相关依赖包 <!--okhttp依赖包--> <dependency><groupId>com.squareup.okhttp3</groupId><artifactId>…

Vue、uniApp、微信小程序、Html5等实现数缓存

此文章带你实现前端缓存&#xff0c;利用时间戳封装一个类似于Redis可以添加过期时间的缓存工具 不仅可以实现对缓存数据设置过期时间&#xff0c;还可以自定义是否需要对缓存数据进行加密处理 工具介绍说明 对缓存数据进行非对称加密处理 对必要数据进行缓存&#xff0c;并…

php通用后台开发框架源码

php通用后台开发框架源码 基于ThinkPHPBootstrap的快速后台开发框架。 基于Auth验证的权限管理系统&#xff0c;支持无限级父子级权限继承&#xff0c;父级的管理员可任意 增删改子级管理员及权限设置&#xff0c;支持单管理员多角色&#xff0c;支持管理子级数据或个人数据。 …

Linux学习记录——삼십구 数据链路层协议

文章目录 1、了解数据链路层2、认识以太网3、认识MAC地址4、以太网报文5、局域网通信原理1、基本原理2、数据碰撞3、交换机4、ARP协议5、RARP协议6、局域网中间人 6、DNS&#xff08;简单介绍&#xff09;7、ICMP协议1、报文2、traceroute命令 7、NAT技术1、基本过程2、NAPT3、…

C++力扣题目111--二叉树的最小深度

力扣题目链接(opens new window) 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 返回它的最小深度 2 思路 看完了这篇104.二…

Java入门IDEA基础语法

1&#xff1a;Java入门 1.1 Java简介 Java是什么&#xff1a; Java是一门非常优秀的计算机语言 语言&#xff1a;人与人交流沟通的表达方式 计算机语言&#xff1a;人与计算机之间进行信息交流沟通的一种特殊语言 Java之父&#xff1a;詹姆斯高斯林&#xff08;James Gosli…

履践致远 载誉前行 | 甄知科技获评多项荣誉资质认定!

砥砺深耕 履践致远 甄知科技不断精进 持续成长 获评多项荣誉资质认定 23年4月 甄知成功入库科技型中小企业名单 2023年4月&#xff0c;上海市科技技术委员会公布2023年第二批入库科技型中小企业名单&#xff0c;依据《科技型中小企业评价办法》等要求&#xff0c;经各级评价工…

孩子用什么样的灯对眼睛没有伤害?分享最合适孩子的护眼台灯

为人父母以后&#xff0c;孩子健康成长一定是摆放在首位的&#xff0c;随着孩子慢慢长大&#xff0c;步入更高的年级&#xff0c;作业课程也在随之增多。不少孩子哪怕夜色已经降临&#xff0c;仍就伏案在桌子上完成没有做完的功课&#xff0c;作为父母的我们不得不担心孩子的视…

记录一下Canal的错误,主要是top.javatool.canal.client.util下的StringConvertUtil引起的

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 由于数据库的一个localdatetime字段是空的&#xff0c; 然后修改数据库数据同步canal的时候报了这个错误&#xff1a; Caused by: java.lang.IllegalArgumentException: Can not set java.time.LocalD…

浏览器输入一个域名的解析过程

目录 从输入一个域名的解析过程 以www.baidu.com为例子 本地缓存和hosts文件 mDNS和LLMNR NBT-NS 路由器广播 Root域名服务器 顶级域名服务器 目标域名服务器 DNS解析完成 操作系统发起TCP连接&#xff1a; TCP三次握手&#xff1a; TCP连接的建立采用经典的三次握手过程&#…

2023年全国职业院校技能大赛软件测试赛题—单元测试卷③

单元测试 一、任务要求 题目1&#xff1a;输入一个大写字母一个小写字母。根据输入的第一个字母和英文周几单词的第一个大写字母判断是周几&#xff0c;如果无法根据第一个大写字母判断&#xff0c;则继续根据输入的第二个小写字母进行判断&#xff0c;最终返回正确的英文周几…

第88讲:XtraBackup实现增量数据备份以及故障恢复的应用实践

文章目录 1.XtraBackup增量备份恢复的概念2.XBK增量备份语法3.使用XBK实现数据库的增量备份3.1.周日全量备份数据库3.2.周一产生增量数据并进行增量备份3.3.周二产生增量数据并进行增量备份3.4.查看两次增量以及全量的备份文件3.5.核对全量和增量备份的准确性 4.使用XBK通过增量…

WPF真入门教程27--项目案例--设备数据实时监测

1、上图看效果 今天要做的一个案例是这样的效果&#xff0c;它能实时监测车间设备有关数据&#xff0c;并以表格和图形显示在界面上&#xff0c;这个比上个案例要复杂些&#xff0c;颜值也高些&#xff0c;通过这个来巩固wpf的技能&#xff0c;用到了命令绑定&#xff0c;样式…

【数据库】视图索引执行计划多表查询笔试题

文章目录 一、视图1.1 概念1.2 视图与数据表的区别1.3 优点1.4 语法1.5 实例 二、索引2.1 什么是索引2.2.为什么要使用索引2.3 优缺点2.4 何时不使用索引2.5 索引何时失效2.6 索引分类2.6.1.普通索引2.6.2.唯一索引2.6.3.主键索引2.6.4.组合索引2.6.5.全文索引 三、执行计划3.1…