C# OpenCvSharp DNN 二维码增强 超分辨率

news2024/11/15 15:33:49

效果

 项目

 代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using OpenCvSharp;
using OpenCvSharp.Dnn;
using OpenCvSharp.Extensions;

namespace OpenCvSharp_DNN_二维码增强
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private string fileFilter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
        Bitmap bmp;
        String imgPath = "";

        const string prototxt_path = "sr.prototxt";
        const string caffe_model_path = "sr.caffemodel";

        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = fileFilter;
            if (ofd.ShowDialog() != DialogResult.OK) return;
            imgPath = ofd.FileName;
            bmp = new Bitmap(imgPath);
            pictureBox1.Image = bmp;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (pictureBox1.Image == null)
            {
                return;
            }

            var src = Cv2.ImRead(imgPath, ImreadModes.Grayscale);
            var srnet = CvDnn.ReadNetFromCaffe(prototxt_path, caffe_model_path);
            Mat blob = CvDnn.BlobFromImage(src, 1.0 / 255, src.Size(), new Scalar(0.0f), false, false);
            srnet.SetInput(blob);
            var prob = srnet.Forward();
            var dst = new Mat(prob.Size(2), prob.Size(3), MatType.CV_8UC1);
            for (int row = 0; row < prob.Size(2); row++)
            {
                for (int col = 0; col < prob.Size(3); col++)
                {
                    float pixel = prob.At<float>(0, 0, row, col) * 255;
                    dst.Set<byte>(row, col, (byte)(Math.Max(0, Math.Min(pixel, 255f))));
                }
            }
            pictureBox2.Image = BitmapConverter.ToBitmap(dst);

            // Cv2.ImShow("src", src);
            // Cv2.ImShow("dst", dst);
        }
    }
}

Demo下载

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

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

相关文章

new String创建几个对象

在java17中 &#xff1a; 问题1&#xff1a;new String("abc")会产生多少个对象&#xff1f; 分两种情况&#xff1a; 情况1&#xff1a; 如果”abc”这个字符串常量不存在&#xff0c;则创建两个对象&#xff0c;分别是“abc”这个字符串常量&#xff0c;以及ne…

Linux Kernel 4.12 或将新增优化分析工具

到 7 月初&#xff0c;Linux Kernel 4.12 预计将为修复所有安全漏洞而奠定基础&#xff0c;另外新增的是一个分析工具&#xff0c;对于开发者优化启动时间时会有所帮助。 新的「个别任务统一模型」&#xff08;Per-Task Consistency Model&#xff09;为主要核心实时修补&#…

PPT操作技巧:如何对文档进行保护和加密

辛辛苦苦设计出的PPT&#xff0c;不希望呗别人拿去当“模板”&#xff1b; PPT中包含项目的关键内容或公司的重要信息&#xff0c;不希望泄露&#xff1b; …… 这些情况下&#xff0c;我们肯定需要找办法来保护自己的PPT。 小编今天就来跟大家分享几个实用的PPT加密保护技巧。…

怎么用gif合成将视频转gif?推荐使用这款视频转gif工具

想要将喜欢的视频片段转换成gif动态图&#xff0c;可以试试今天分享的这款视频转gif工具&#xff0c;支持视频在线转gif&#xff0c;无需下载多余gif合成&#xff08;https://www.gif.cn&#xff09;工具&#xff0c;赶紧来看看怎么操作的吧。 打开网站&#xff0c;在首页选择…

如何查看Linux内核版本

如何查看Linux内核版本 uname -r用centos7.0&#xff0c;内核版本就是3.10

测试框架pytest教程(8)失败重试-pytest-rerunfailures

pytest-rerunfailures是一个pytest插件&#xff0c;用于重新运行失败的测试用例。当测试用例在第一次运行时失败&#xff0c;该插件会自动重新运行指定次数的失败用例&#xff0c;以提高稳定性和减少偶发性错误的影响。 要使用pytest-rerunfailures插件&#xff0c;需要按照以…

余承东确认:新问界M7将在2023年成都车展亮相,全车投入超 5亿元

据报道&#xff0c;AITO官方近日宣布&#xff0c;新款问界M7将在2023年成都车展上进行亮相&#xff0c;具体日期为8月25日。从官方预热海报来看&#xff0c;新款问界 M7将定位为一款大五座SUV&#xff0c;车身前脸相比上一代车型没有太大变化&#xff0c;底部格栅似乎采用了封闭…

解码全栈开发工程师

写在前面 你想成为一名全栈工程师吗&#xff1f;在如今这个大兴降本增效的时代&#xff0c;“全栈”似乎被动的成为了大部分开发者的最终归宿。 在一部分人眼中&#xff0c;全栈代表着更快的成长速度、更丰富的岗位选择&#xff0c;更全面的技术栈也能够为晋升管理岗铺平道路。…

如何准备软件开发项目成本估算?

软件开发的成本估算是出了名的困难。对于软件开发项目来说&#xff0c;预算超支反而是常态&#xff0c;而不是例外。 在开始估算之前&#xff0c;请从业务角度了解项目的战略目标和你的目标。你可能计划尽可能赚取更多利润&#xff0c;探索新技术&#xff0c;或者在项目可能亏…

idea 左下角的Git(Version Control)中显示Local Changes窗口

打开Local Changes窗口来查看当前Git仓库的本地变更。 使用快捷键: - Windows: Alt9 - Mac: Cmd9 解决&#xff1a; &#xff08;1&#xff09;idea打开settings &#xff08;2&#xff09;点击Version Control窗口选项卡&#xff0c;选择Commit选项&#xff0c;对 Use.... in…

国外芯片五大玩家联手组建了另一家RISC-V合资企业

原文链接&#xff1a;https://www.theregister.com/2023/08/04/chip_companies_risc_v/ 以下是正文 Initial drive starts in Germany, pushes automotive blueprints 最初的驱动从德国开始&#xff0c;推动汽车蓝图 The RISC-V open instruction set architecture got a boo…

底层开发必知的内存结构概念

Linux中内存管理子系统使用节点&#xff08;node&#xff09;、区域&#xff08;zone&#xff09;和页&#xff08;page&#xff09;三级结构描述物理内存。 内存节点 内存节点分两种情况&#xff1a;UMA和NUMA。 从管理内存的方法上区分&#xff0c;计算机可以分为两种类型…

20 与时俱进:浅谈移动应用测试方法与思路

移动端应用可以细分为三大类&#xff1a;Web App、Native App 和 Hybrid App Web App 指的是移动端的 Web 浏览器。Native App 指的是移动端的原生应用&#xff0c; 对于 Android 是 apk&#xff0c;对于 iOS 就是 ipa。Hybrid App&#xff08;俗称&#xff1a;混血应用&#…

MeterSphere开源项目GitHub Star数量超过10000!

截至2023年8月21日11:00&#xff0c;MeterSphere一站式开源持续测试平台GitHub Star数超过10000个&#xff01;继JumpServer、DataEase、Halo之后&#xff0c;MeterSphere成为FIT2CLOUD飞致云旗下第四个GitHub Star数量超过10000个的开源项目。

如何提升城市空气质量?一招教会你

空气质量监控&#xff0c;作为保障人类健康和维护环境可持续的关键手段&#xff0c;在现代社会发挥着重要作用。通过实时监测、数据采集和分析&#xff0c;我们能够深入了解空气中各种污染物的浓度以及气象参数的变化&#xff0c;从而评估空气质量的状况。 空气质量监控通过科学…

浅析Python爬虫ip程序延迟和吞吐量影响因素

作为一名资深的爬虫程序员&#xff0c;今天我们很有必要来聊聊Python爬虫ip程序的延迟和吞吐量&#xff0c;这是影响我们爬取效率的重要因素。这里我们会提供一些实用的解决方案&#xff0c;让你的爬虫程序飞起来&#xff01; 网络延迟 首先&#xff0c;让我们来看看网络延迟对…

office open xml

微信在线文档下载本地word&#xff0c;XXX.docx&#xff0c;打不开

管家婆中了mallox勒索病毒该怎么办?勒索病毒解密数据恢复

管家婆是很多中小企业使用的财务软件&#xff0c;它的性价比高、操作简单&#xff0c;适用行业也非常广。这也是它能够赢得众多中小企业主欢迎的原因之一。俗话说的好&#xff0c;木秀于林风必摧之&#xff0c;正是因为管家婆有着非常庞大的使用群体&#xff0c;所以它才成为了…

33.@RequestMapping注解

RequestMapping注解 从注解名称代表RequestMapping注解的作用就是将请求和处理请求的控制器方法关联起来&#xff0c;建立映射关系。SpringMVC 接收到指定的请求&#xff0c;就会来找到在映射关系中对应的控制器方法来处理这个请求 注解位置 RequestMapping标识一个类&#xf…