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

效果

项目

代码

cs 复制代码
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下载

相关推荐
relis11 分钟前
RoPE位置编码缩放因子的最优解:频率维度与位置敏感度的精妙权衡
人工智能·算法·语言模型
山烛30 分钟前
OpenCV 图像轮廓检测
图像处理·人工智能·python·opencv·计算机视觉·轮廓检测
Passwerob44 分钟前
Deformable 3D Gaussians:把动态场景装进“可变形的静态世界”
人工智能·python·计算机视觉·3d·3dgs
云卓SKYDROID1 小时前
无人机传感器技术要点与难点解析
人工智能·数码相机·无人机·高科技·云卓科技·固件升级
l12345sy1 小时前
Day20_【机器学习—逻辑回归 (2)—分类评估方法】
人工智能·机器学习·逻辑回归·召回率·精确率·分类评估方法·roc与auc
GUPAOAI1 小时前
为什么神经网络网络算法比机器学习模型算法更加强大?
人工智能·深度学习·神经网络·机器学习·ai
爱喝奶茶的企鹅1 小时前
Ethan独立开发新品速递 | 2025-09-03
人工智能
爱喝奶茶的企鹅1 小时前
Ethan开发者创新项目日报 | 2025-09-03
人工智能
双翌视觉1 小时前
机器视觉中为什么优先选择黑白相机?
人工智能·数码相机·计算机视觉
数字游名Tomda1 小时前
美团 LongCat 开源大模型60 亿参数 MoE 架构,赋能开发者加速 AI 应用落地
人工智能·架构·开源·ai模型