深度神经网络下的风格迁移模型(C#)

news2024/9/30 11:34:23

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

这个是C#版本的,这里就只放出代码。VB.Net版本请参看 深度神经网络下的风格迁移模型-CSDN博客

斯坦福大学李飞飞团队的风格迁移模型是一种基于深度学习的图像处理技术,可以将一张图像的风格转移到另一张图像上。该模型最初由Gatys等人提出,后来被李飞飞团队进一步优化和改进。该模型在图像处理领域具有广泛的应用,例如艺术风格转换、视频风格迁移等。

10种模型可以在这里下载:
深度神经网络下的风格迁移模型资源-CSDN文库
 

原图:

        //风格序号
        int styleindex = 0;
    //风格迁移
        private void Button7_Click(object sender, EventArgs e)
        {
            //需要测试的图像文件
            Mat m = new Mat("C:\\learnEmgucv\\tower.jpg", ImreadModes.Color);

            Single hm = m.Height;
            Single wm = m.Width;
            //10种风格迁移
            string[] styles = new string[10];
            styles[0] = "C:\\learnEmgucv\\styletransfer\\eccv16\\starry_night.t7";
            styles[1] = "C:\\learnEmgucv\\styletransfer\\eccv16\\composition_vii.t7";
            styles[2] = "C:\\learnEmgucv\\styletransfer\\eccv16\\la_muse.t7";
            styles[3] = "C:\\learnEmgucv\\styletransfer\\eccv16\\the_wave.t7";
            styles[4] = "C:\\learnEmgucv\\styletransfer\\instance_norm\\candy.t7";
            styles[5] = "C:\\learnEmgucv\\styletransfer\\instance_norm\\feathers.t7";
            styles[6] = "C:\\learnEmgucv\\styletransfer\\instance_norm\\la_muse.t7";
            styles[7] = "C:\\learnEmgucv\\styletransfer\\instance_norm\\mosaic.t7";
            styles[8] = "C:\\learnEmgucv\\styletransfer\\instance_norm\\the_scream.t7";
            styles[9] = "C:\\learnEmgucv\\styletransfer\\instance_norm\\udnie.t7";

        'https://blog.csdn.net/uruseibest
            Net net;
            net = DnnInvoke.ReadNet(styles[styleindex]);

            Mat blob ;
            blob = DnnInvoke.BlobFromImage(m, 1.0, new Size((int)wm, (int)hm), new MCvScalar(0, 0, 0), false, false);

            net.SetInput(blob);

            Mat mout = new Mat();
            mout = net.Forward();

            //返回一个四维数组
            Single[,,,] fout;
            fout = (Single[,,,])mout.GetData();
            //返回维度:
            //第1维:图像数量,这里是1
            //第2维:通道数量   //3
            //第3维:高度    //
            //第4维:宽度    //
            //在实际中需要将第2维、第3维、第4维提取出来组成一个图像

            int channels = fout.GetLength(1);
            int height = fout.GetLength(2);
            int width = fout.GetLength(3);

            VectorOfMat vm = new VectorOfMat();
            for (int i = 0; i < channels; i++)
            {
                //取出每个通道
                Matrix<int> matr = new Matrix<int>(new Size(width, height));
                for (int j = 0; j < height; j++)
                    for (int k = 0; k < width; k++)
                        matr[j, k] = (int)fout[0, i, j, k];
                //将每个通道图像加入到VectorOfMat,总共3个通道
                vm.Push(matr.Mat);
            }

        'https://blog.csdn.net/uruseibest
            Mat outputmat = new Mat();
            //合并通道
            CvInvoke.Merge(vm, outputmat);

            ImageBox1.Image = outputmat;

            if (styleindex == 9)
                styleindex = 0;
            else
                styleindex += 1;
        }

处理后的图片:

由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。

学习更多vb.net知识,请参看vb.net 教程 目录

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

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

相关文章

虚拟机安装windows2012和虚拟机安装国产系统deepin

虚拟机安装windows2012和虚拟机安装国产系统deepin 一.安装windows20121.安装VMWare虚拟机2.1.注意点一&#xff1a;VMWare虚拟网卡2.2.注意点二&#xff1a;配置虚拟网络编辑器3.安装配置Windows Server 2012 R2 二.虚拟机安装deepin1.deepin官网下载ios镜像2.deepin下载合适的…

Webpack基础使用

目录 一.什么是Webpack 二.为什么要使用Webpack 三.Webpack的使用 1.下载yarn包管理器 2.Webpack的安装 3.Webpack的简单使用 4.效果 四.Webpack打包流程 一.什么是Webpack Webpack是一个静态模块打包工具 二.为什么要使用Webpack 在开发中&#xff0c;我们常常会遇到…

Python中NumPy详解

文章目录 NumPyNumPy介绍导入NumPyNumPy数组序列生成数组函数生成数组range&#xff0c;arange&#xff0c;linspace 其他常用函数 N维数组的属性NumPy数组的运算向量运算算数运算逐元素运算、点乘运算 操作数组元素索引访问数组切片访问数组转置与展平 NumPy的广播NumPy的高级…

ISP 状态机轮转和bubble恢复机制

1 ISP的中断类型 ISP中断类型 SOF: 一帧图像数据开始传输 EOF: 一帧图像数据传输完成 REG_UPDATE: ISP寄存器更新完成(每个reg group都有独立的这个中断) EPOCH: ISP某一行结尾(默认20)就会产生此中断 BUFFER DONE: 一帧图像数据ISP完全写到DDR了 2 ISP驱动状态机 通过camer…

看图学源码之FutureTask

RunnableFuture 源码学习&#xff1a; 成员变量 任务的运行状态的转化 package java.util.concurrent; import java.util.concurrent.locks.LockSupport;/**可取消的异步计算。该类提供了Future的基本实现&#xff0c;包括启动和取消计算的方法&#xff0c;查询计算是否完成以…

redis基本用法学习(C#调用FreeRedis操作redis)

FreeRedis属于常用的基于.net的redis客户端&#xff0c;EasyCaching中也提供适配FreeRedis的包。根据参考文献4中的说法&#xff0c;FreeRedis和CsRedis算是近亲&#xff08;都是GitHub中账号为2881099下的开源项目&#xff09;&#xff0c;因此其用法特别相似。FreeRedis的主要…

WT2605C高品质音频蓝牙语音芯片:外接功放实现双声道DAC输出的优势

在音频处理领域&#xff0c;双声道DAC输出能够提供更为清晰、逼真的音效&#xff0c;增强用户的听觉体验。针对这一需求&#xff0c;唯创知音的WT2605C高品质音频蓝牙语音芯片&#xff0c;通过外接功放实现双声道DAC输出&#xff0c;展现出独特的应用优势。 一、高品质音频处理…

Altium Designer(AD24)新工程复用设计文件图文教程及视频演示

&#x1f3e1;《专栏目录》 目录 1&#xff0c;概述2&#xff0c;复用方法一视频演示2.1&#xff0c;创建工程2.2&#xff0c;复用设计文件 3&#xff0c;复用方法二视频演示4&#xff0c;总结 欢迎点击浏览更多高清视频演示 1&#xff0c;概述 本文简述使用AD软件复用设计文件…

ARM GIC (五)gicv3架构-LPI

在gicv3中,引入了一种新的中断类型。message based interrupts,消息中断。 一、消息中断 外设,不在通过专用中断线,向gic发送中断,而是写gic的寄存器,来发送中断。 这样的一个好处是,可以减少中断线的个数。 为了支持消息中断,gicv3,增加了LPI,来支持消息中断。并且…

Kali Linux—借助 SET+MSF 进行网络钓鱼、生成木马、获主机shell、权限提升、远程监控、钓鱼邮件等完整渗透测试(一)

社会工程学—世界头号黑客凯文米特尼克在《欺骗的艺术》中曾提到&#xff0c;这是一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行诸如欺骗、伤害等危害手段。 SET最常用的攻击方法有&#xff1a;用恶意附件对目标进行 E-mail 钓鱼攻击、Java Applet攻…

分布式任务调度QuartZ框架使用(通过注解使用quartz)

1、Quartz概述 quartz官网文档&#xff1a;http://www.quartz-scheduler.org/ quartz是一个定时调度的框架&#xff0c;属于比较早期的产品&#xff0c;现在市面上流行的xxl-Job&#xff0c;elastic-Job分布式调度框架都是基于该产品。虽然很多人说quartz的使用不是很方便&am…

web架构师编辑器内容-使用html2canvas获取截图,并处理一些问题

html2canvas-api 为了使用html2canvas完成截图的功能&#xff0c;我们首先先使用一个按钮来测试一下html2canvas的截图功能。 首先在页面上创建一个img标签 <img id"test-image" :style"{ width: 300px}"/>创建一个button按钮&#xff0c;添加点击…

Python实验:关灯游戏

文章目录 前言一、设计表二、关键代码三、运行结果小地图&#xff0c;容易难度&#xff1a;中地图&#xff0c;中等难度&#xff1a;大地图&#xff0c;困难难度&#xff1a; 四、完整代码链接总结 前言 这是一个Python实验作业&#xff0c;内容如下&#xff1a; 题目要求&am…

boss app sig及sp参数,魔改base64

前言 大家好呀,欢迎来到我的博客.2023年12月4日,boss web上线了最新的zp_token,环境检测点又增加了,与此同时app端的关键加密so从32位换成了64位,两者ida反编译so的时候都有反调试,无法直接f5,需要手动调整让ida重新识别.google了一下几乎找不到任何有关boss app的文章,所以这…

玩转 Scrapy 框架 (一):Scrapy 框架介绍及使用入门

目录 一、Scrapy 框架介绍二、Scrapy 入门 一、Scrapy 框架介绍 简介&#xff1a; Scrapy 是一个基于 Python 开发的爬虫框架&#xff0c;可以说它是当前 Python 爬虫生态中最流行的爬虫框架&#xff0c;该框架提供了非常多爬虫的相关组件&#xff0c;架构清晰&#xff0c;可扩…

SpringSecurity深度解析与实践(3)

这里写自定义目录标题 引言SpringSecurity之授权授权介绍java权限集成 登录失败三次用户上锁 引言 SpringSecurity深度解析与实践&#xff08;2&#xff09;的网址 SpringSecurity之授权 授权介绍 Spring Security 中的授权分为两种类型&#xff1a; 基于角色的授权&#…

基于Springboot的留守儿童爱心网站(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的留守儿童爱心网站(有报告)。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring…

怎么做好数字化工厂的建设?

怎样建设好的数字化工厂&#xff0c;不但须要有充足的费用预算&#xff0c;更加需要科学研究的计划和设计方案&#xff0c;一般做好智能化基本建设&#xff0c;务必要根据下列流程&#xff1a; 一.信息管理系统的计划和设计方案   许多的工厂会购买许多的单独的信息管理系统&…

基于SpringBoot+Vue的办公OA系统

开发环境 IDEA JDK1.8 MySQL8.0Node14.17.0 系统简介 本系统为前后端分离项目&#xff0c;主要拥有两个身份登录系统&#xff0c;管理员可以发布公告等信息&#xff0c;员工登录可以申请请假等信息&#xff0c;系统难度适中&#xff0c;适合学习研究使用&#xff0c;具体请…

深度学习中用来训练的train.py 探究学习2.0( 数据预处理)

数据预处理 下列代码为train.py中常见的一些数据处理方法 train_transform transforms.Compose([transforms.Resize((224, 224)),transforms.RandomVerticalFlip(),# 随机旋转&#xff0c;-45度到45度之间随机选transforms.RandomRotation(45),# 从中心开始裁剪transforms.C…