【官方框架地址】
github.com/emgucv/emgucv
【算法介绍】
调用Emgu.CV4.8.0自带BarcodeDetector的接口进行调用
【效果展示】
【实现部分代码】
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.UI;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace FIRC
{
public partial class Form1 : Form
{
Mat src = new Mat();
public Form1()
{
InitializeComponent();
}
private void btn_video_Click(object sender, EventArgs e)
{
BarcodeManager bm = new BarcodeManager();
ImageViewer viewer = new ImageViewer(); //create an image viewer
VideoCapture capture = new VideoCapture(); //create a camera captue
Application.Idle += new EventHandler(delegate (object s, EventArgs ee)
{ //run this until application closed (close button click on image viewer)
Mat mat = capture.QueryFrame();
if (mat != null)
{
viewer.Image = mat; //绘制从摄像头采集到的图片到ImageViewer中显示 draw the image obtained from camera
CvInvoke.CvtColor(mat,mat,ColorConversion.Bgr2Gray);
bm.GetResult(mat);
}
});
viewer.ShowDialog(); //show the image viewer
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void btn_select_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 = CvInvoke.Imread(openFileDialog.FileName);
pictureBox1.Image =src.ToBitmap();
}
}
private void btn_start_Click(object sender, EventArgs e)
{
BarcodeManager bm = new BarcodeManager();
Mat dest = new Mat();
CvInvoke.CvtColor(src, dest, ColorConversion.Bgr2Gray);
var results = bm.GetResult(dest);
pictureBox2.Image = bm.DrawImage(src.Clone(),results).ToBitmap();
}
}
}
【视频演示】
bilibili.com/video/BV1pt4y1Z7nj/
【源码下载】
【测试环境】
vs2019
netframework==4.7.2
Emgu==4.8.0
?