效果
项目
代码
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下载