[C#]winform基于opencvsharp结合Diffusion-Low-Light算法实现低光图像增强黑暗图片变亮变清晰

news2024/12/27 4:23:37

【训练源码】

https://github.com/JianghaiSCU/Diffusion-Low-Light

【参考源码】

https://github.com/hpc203/Diffusion-Low-Light-onnxrun

【论文地址】

https://arxiv.org/pdf/2306.00306.pdf

【算法原理图】

【效果展示】

 【测试环境】

vs2019

netframework4.7.2

opencvsharp==4.8.0

onnxruntime==1.16.2

【部分实现代码】

using System;
using System.Diagnostics;
using System.Windows.Forms;
using OpenCvSharp;

namespace FIRC
{
    public partial class Form1 : Form
    {
        Mat src = null;
        DLLManager dm = new DLLManager();
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "图文件(*.*)|*.jpg;*.png;*.jpeg;*.bmp";
            openFileDialog.RestoreDirectory = true;
            openFileDialog.Multiselect = false;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
              
                src = Cv2.ImRead(openFileDialog.FileName);
                pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(src);


            }


        }

        private void button2_Click(object sender, EventArgs e)
        {
            if(pictureBox1.Image==null)
            {
                return;
            }
            var resultImg = dm.Inference(src);

            pictureBox2.Image= OpenCvSharp.Extensions.BitmapConverter.ToBitmap(resultImg);



        }
      
          

        private void Form1_Load(object sender, EventArgs e)
        {
            dm.LoadWeights(Application.StartupPath+ "\\weights\\diffusion_low_light_1x3x192x320.onnx");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            VideoCapture capture = new VideoCapture(0);
            if (!capture.IsOpened())
            {
                Console.WriteLine("video not open!");
                return;
            }
            Mat frame = new Mat();
            var sw = new Stopwatch();
            int fps = 0;
            while (true)
            {

                capture.Read(frame);
                if (frame.Empty())
                {
                    Console.WriteLine("data is empty!");
                    break;
                }
                sw.Start();
                var resultImg = dm.Inference(frame);
                sw.Stop();
                fps = Convert.ToInt32(1 / sw.Elapsed.TotalSeconds);
                sw.Reset();
            
                Cv2.PutText(resultImg, "FPS=" + fps, new OpenCvSharp.Point(30, 30), HersheyFonts.HersheyComplex, 1.0, new Scalar(255, 0, 0), 3);
                //显示结果
                Cv2.ImShow("Result", resultImg);
                int key = Cv2.WaitKey(10);
                if (key == 27)
                    break;
            }

            capture.Release();
        }
    }
}

【视频演示】 

C#winform基于opencvsharp结合Diffusion-Low-Light算法实现低光图像增强黑暗图片变亮变清晰_哔哩哔哩_bilibili【测试环境】vs2019netframework4.7.2opencvsharp==4.8.0onnxruntime==1.16.2更多信息参考:https://blog.csdn.net/FL1623863129/article/details/141280921, 视频播放量 1、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 未来自主研究中心, 作者简介 未来自主研究中心,相关视频:AI视频换脸真的快变态死了!!!,火了 !全网首个秋叶aaaki【SDV4.9超强版本炸裂更新】感谢秋枼大佬的SDV4.9整合包+sd教程超强模型插件,【可灵AI】无头人女明星,C#调用yolov7进行目标检测winform开发,YOLOv8检测界面-PyQt5实现,渐冻症患者利用脑机接口"说话",全家人泪流满面,马斯克发布了一条AI生成的视频,C# winform使用onnxruntime部署LYT-Net轻量级低光图像增强算法,C#实现全网yolov7目前最快winform目标检测,C#使用纯OpenCvSharp部署yolov8-pose姿态识别icon-default.png?t=N7T8https://www.bilibili.com/video/BV1RZpRewE96/

【源码下载地址】

https://download.csdn.net/download/FL1623863129/89647108

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

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

相关文章

【数据结构】关于优先级队列(堆),你了解内部原理吗?(超详解!!!)

前言: 🌟🌟Hello家人们,这期讲解二叉树的遍历,希望你能帮到屏幕前的你。 🌈上期博客在这里:http://t.csdnimg.cn/EdeWV 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSD…

Iinux脚本bash:对自己的应用程序及其相关目录进行备份和恢复,并可查看备份计划、备份状态、备份大小等

目录 一、要求 1、需求 2、需求分析 二、脚本 1、总述 2、创建备份脚本 (1)脚本命名 (2)脚本内容 3、创建恢复脚本 (1)脚本命名 (2)脚本内容 4、设置cron作业 5、监控脚…

mybatis、mybatis-plus自定义插件,实现自定义策略数据脱敏功能

背景 mybatis中四大组件的作用,下面开发的插件拦截器会使用 四大组件Executor、StatementHandler、ParameterHandler、ResultSetHandler 需求 1、根据脱敏规则进行查询数据,显示的时候进行展示脱敏 2、根据脱敏规则进行查询数据,将脱敏后的数据批量更新回数据库,进行脱…

【Python系列】 Python打印99乘法表

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Vue+ElementUI技巧分享:创建一个带有进度显示的文件下载和打包组件

在现代前端开发中,用户体验至关重要,尤其是在处理文件下载时。为用户提供实时的下载进度显示和打包功能,不仅能提升用户体验,还能使应用更具专业性。在本文中,我们将创建一个 Vue 组件,用于显示文件下载进度…

视图变化 - 等比例变换防止视图拉伸

文章目录 使用场景等比变换等高填充等宽填充代码进行比目标宽高计算超出部分处理设置负的 marginclip 裁剪 End参考: 使用场景 在日常开发中,经常会遇到的一个需求是将图片/视频从界面的一个位置,变换到另一个位置。在处理这类问题的时候经常…

基于微信小程序的书籍销售预测系统的设计与实现(论文+源码)_kaic

摘 要 随着信息化社会的进步,我们的生活越来越便利。在网上,我们可以轻松地进行各种交易,其中包括图书交易。可以说,图书交易是网络交易的一个重要方面。本系统以面向对象的方式进行开发,使用MySQL作为主要数据存储…

linux centos stream9图形化操作

初学者对图形化操作比较熟悉,对字符界面、命令行比较陌生。本文讨论一下图形化操作的基本技能。希望初学者掌握后尽快使用字符界面,会执行命令,更会编程。 本案例是基于stream9版本,如版本不同,会有差别,注意操作使用。 一、安装图形化界面 Linux操作系统常用的图形用…

Unity URP无光照下Shadow 制作 <二> 合批处理

闲谈 相信大家在日常工作中发现了一个问题 , urp下虽然可以做到3个Pass 去写我们想要的效果,但是,不能合批(不能合批,那不是我们CPU要干冒烟~!) 好家伙,熊猫老师的偏方来了 &#x…

Leetcode JAVA刷刷站(38)外观数列

一、题目概述 二、思路方向 为了解决这个问题,我们可以编写一个Java函数countAndSay,该函数接受一个整数n作为输入,并返回外观数列的第n个元素。这个函数将基于递归公式来构建数列,其中countAndSay(1) "1",…

vue设置环境变量

1、在根目录地下建立两个文件,.env.development 和 .env.production VUE_APP_BASE_API"" .env.development这个就是开发环境,.env.production这个就是生产环境,也就是这个可以写本地的ip端口 .env.production 这个就是生产环境&…

Verilog刷题笔记51

题目: Now that you have a state machine that will identify three-byte messages in a PS/2 byte stream, add a datapath that will also output the 24-bit (3 byte) message whenever a packet is received (out_bytes[23:16] is the first byte, out_bytes[1…

14、springboot3 vue3开发平台-前端-自定义菜单组件,根据路由动态渲染

文章目录 1. 组件2 . 使用示例 1. 组件 src\components\menuTree\index.vue <template><template v-for"item in menuList"><!-- 分为两种方式渲染&#xff1a;有子菜单和没有子菜单--><!-- 没有子菜单--><el-menu-item :index&qu…

linux cpu问题排查及性能优化

cpu性能 一、cpu啥时候才叫有瓶颈 cpu运行的快还是慢、cpu有没有问题&#xff0c;cpu是不是还需要优化。这些是平常开发和运维中经常遇到的问题。那么我门到底如何去判断机器cpu运行的到底有没有异常呢。 从我排查问题来说&#xff0c;单看系统指标不能完全反应应用运行的状态…

移动魔百盒刷机教程

准备工作 确认型号&#xff1a;首先确认您的魔百盒的具体型号&#xff0c;不同的型号可能需要不同的刷机包。刷机包&#xff1a;下载适合您型号的刷机包。U盘&#xff1a;准备一个容量不超过8GB的U盘&#xff0c;并将其格式化为FAT32格式。刷机工具&#xff1a;根据型号可能需…

深度学习实战:手把手教你构建多任务、多标签模型

多任务多标签模型是现代机器学习中的基础架构&#xff0c;这个任务在概念上很简单 -训练一个模型同时预测多个任务的多个输出。 在本文中,我们将基于流行的 MovieLens 数据集,使用稀疏特征来创建一个多任务多标签模型,并逐步介绍整个过程。所以本文将涵盖数据准备、模型构建、训…

keepalived讲解及练习

目录 1、keepalived介绍 1.1 keepalived简介 2、高可用集群 2.1 集群类型 2.2 系统可用性 2.3 系统故障 2.4 实现高可用 3、VRRP 3.1 VRRP&#xff1a;Virtual Router Redundancy Protocol 3.2 VRRP 相关术语 3.3 VRRP相关技术 4、 keepalived实验 4.1 全局配置 4…

Vue封装axios请求(超详细)

一、简介 Vue封装axios请求是指将axios库集成到Vue项目中&#xff0c;以便更方便地发送HTTP请求。首先&#xff0c;需要安装axios库&#xff0c;然后在Vue项目中创建一个名为request.js的文件&#xff0c;用于封装axios实例。在这个文件中&#xff0c;可以设置默认的配置&#…

fastzdp_sqlmodel框架是如何实现更新和删除相关的功能封装的,20240817,Python的国产新ORM框架

根据模型对象更新 初步封装的方法 def update(engine, model_obj, update_dict):"""修改数据:param engine: 连接数据库的引擎对象:param model_obj: 模型对象:param update_dict: 更新字典:return:"""with Session(engine) as session:if not…

Git工具详细使用教程

Git工具详细使用教程 Git是一个分布式版本控制系统&#xff0c;它可以帮助你管理代码的历史记录。本教程将介绍如何使用Git工具进行基本的版本控制操作。 1. 安装Git 首先&#xff0c;你需要在你的计算机上安装Git。你可以从Git官方网站&#xff08;https://git-scm.com/&am…