AI分割迁移绘画-neural-style

news2024/11/16 19:40:59

 🏡 个人主页: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.coloradmin.cn/o/1376658.html

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

相关文章

性能测试分析案例-定位内核线程CPU利用率太高

环境准备 预先安装 docker、perf、hping3、curl 等工具,如 apt install docker.io linux-tools-common hping3 操作和分析 Linux 在启动过程中,有三个特殊的进程,也就是 PID 号最小的三个进程。 0 号进程为 idle 进程,这也是系…

【Git】查看凭据管理器的账号信息,并删除账号,解决首次认证登录失败后无法重新登录的问题

欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是是《代码管理工具》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的…

SQL语句详解一

概念 什么是 SQL?(如果还未安装MySQL请参考此文章安装下) Structured Query Language:结构化查询语言其实就是定义和操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为"方言"。 SQ…

[Linux 进程(二)] Linux进程状态

文章目录 1、进程各状态的概念1.1 运行状态1.2 阻塞状态1.3 挂起状态 2、Linux进程状态2.1 运行状态 R2.2 睡眠状态 S2.3 深度睡眠 D2.4 停止状态 T2.5 僵尸状态 Z 与 死亡状态 X孤儿进程 Linux内核中,进程状态,就是PCB中的一个字段,是PCB中的…

答题小程序源码系统:自带流量主广告位+视频激励广告 带完整的代码安装包以及搭建教程

随着互联网的迅速发展,各种应用程序层出不穷,而答题类小程序由于其独特的互动性和吸引力,成为了当前最热门的应用之一。答题小程序源码系统是一款基于微信小程序开发的源代码系统,它具有丰富的功能和灵活的定制性,可以…

视频号下载保姆级攻略:五大神级下载方法揭秘!

今天我要和大家聊聊一个非常有趣的话题,那就是如何下载视频号的视频。据我所知虽然很多人都知道视频号,但却不知道如何玩好视频号,以及怎么下载视频,我知道有些朋友可能对这个话题还不太了解,但是我相信,只…

决策树(公式推导+举例应用)

文章目录 引言决策树学习基本思路划分选择信息熵信息增益增益率(C4.5)基尼指数(CART) 剪枝处理预剪枝(逐步构建决策树)后剪枝(先构建决策树再剪枝) 连续值与缺失值处理连续值处理缺失…

【Spring Cloud】微服务架构演变及微服务架构介绍

文章目录 系统架构演变单体应用架构垂直应用架构分布式架构SOA 架构微服务架构 微服务架构介绍微服务架构的常见问题微服务架构的常见概念服务治理服务调用服务网关服务容错链路追踪 微服务架构的常见解决方案ServiceCombSpringCloudSpring Cloud Alibaba 总结 欢迎来到阿Q社区…

泥石流识别摄像头

泥石流是一种自然灾害,对人们的生命财产造成严重威胁。因此,如何及早发现和预警泥石流,成为了人们关注的焦点。为了提前发现泥石流并进行预警,科学家们设计了一种泥石流识别摄像头系统。 泥石流识别摄像头利用摄像头和图像识别技术…

C++从零基础到入门(2)—— (if、switch、for、while语句)

目录 一、if 条件语句 1.if 语句 2.if-else 语句 3.if-else if-else 语句 4.嵌套 if 语句 二、switch 语句 1.switch 语句基本语法 2.表示 switch 表达式的数据类型 (1)整型 (2)字符型 (3)枚举型…

RediSearch vs. Elasticsearch vs. solr

1. RediSearch vs. Elasticsearch RediSearch是一个分布式全文搜索和聚合引擎,作为Redis之上的一个模块构建。它使用户能够以极快的方式在Redis数据集上执行复杂的搜索查询。RediSearch的独特架构是用C编写的,从头开始构建在优化的数据结构上&#xff0…

Histone H3K4me2 Antibody, SNAP-Certified™ for CUTRUN

EpiCypher是一家为表观遗传学和染色质生物学研究提供高质量试剂和工具的专业制造商。EpiCypher推出的CUT&RUN级别的Histone H3K4me2 Antibody符合EpiCypher的批次特异性SNAP-CertifiedTM标准,在CUT&RUN中具有特异性和高效的靶点富集。通过SNAP-CUTANA™K-Me…

JVM基础(9)——新生代调优

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖&…

【linux基础I/O(二)】文件系统讲解以及文件缓冲区的概念

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Linux从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学更多操作系统知识   🔝🔝 基础I/O 1. 前言2. 理解C语言…

基于STM32的温室大棚环境检测及自动浇灌系统设计

需要全部资料请私信我! 基于STM32的温室大棚环境检测及自动浇灌系统设计 一、绪论1.1 研究背景及意义1.2 研究内容1.3 功能设计 二、系统方案设计2.1 总体方案设计 三、系统硬件设计3.1 STM32单片机最小系统3.2 环境温度检测电路设计3.3 土壤湿度检测电路设计3.4 光…

MySQL的事务机制

一、事务机制简述 事务机制,避免写入直接操作数据文件;利用日志来实现间接写入,与事务有关的, redo日志与undo日志;sql语句操作记录复制到undo日志然后增删改查操作的结果会记录在redo日志,如果操作没有什么问题就把数据同步到数…

Linux 抓包还不会?这篇文章赶紧收藏!

前言 什么是TCPDUMP TCPdump,全称dump the traffic on a network,是一个运行在linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具。 tcpdump可以支持的功能: 1、在Linux平台将网络中传输的数据包全部捕获过来进行分析 …

k8s-调度 13

调度器通过 kubernetes 的 watch 机制来发现集群中新创建且尚未被调度到 Node 上的 Pod。调度器会将发现的每一个未调度的 Pod 调度到一个合适的 Node 上来运行。 kube-scheduler 是 Kubernetes 集群的默认调度器,并且是集群控制面的一部分。 如果你真的希望或者有…

分享一款刚开源的音乐人声分离工具!无需联网!页面化操作!

前言 人声分离 是一项重要的音频处理技术,它可以将混合音频中的 人声和背景音乐 分离出来,为音频处理和后期制作提供了便利。 随着人声分离技术的发展,越来越多的开源工具被开发出来,为音频处理领域带来了新的发展机遇。小编之前…

C# 图解教程 第5版 —— 第21章 异步编程

文章目录 21.1 什么是 异步21.2 async/await 特性的结构21.3 什么是异步方法21.3.1 异步方法的控制流21.3.2 取消一个异步操作21.3.3 在调用方法中同步地等待任务21.3.4 在异步方法中异步地等待任务21.3.5 Task.Delay 方法 21.4 GUI 程序中的异步操作(*)…