从图像读条码 - 三:{A}{A2}
{S0}鸣谢
该项目是基于CodeProject上的文章:{A3}。我问了qlipoth许可发布他的代码的增强版本。简介
我公司需要从图像中还含有条码(S)的同一页上的文本阅读条形码。在C#解决方案时,我发现{A4}。他的代码,朝着我想要的东西很长的路要走,但我需要一些改进。最后,我的变化,一个显著重写的理由CodeProject上一个新的出版物。背景
这段代码相比,在2005年写的原代码的几项改进:验证添加Code39条形码。该代码的机会要少得多检测quot; barcodequot;实际上并不存在。检测速度提高。在原有项目的主要问题是,它使用Bitmap.RotateFlip的功能是相当缓慢。新增EAN / UPC条码,CODE128条码支持。原来的项目只能检测到Code39条形码。修正一些错误报道qlipoth的项目和相关的项目,在2004年{A5}。使用代码
要打开的解决方案,您需要Visual Studio 2008中。不过,我没有使用任何构造。NET 1.1的兼容,所以实际的代码应该也可以在Visual Studio 2003或2005年编译。
要使用的代码,调用FullScanPage或与Windows位图对象包含您的图像ScanPage。包括TestApp(VB.NET编写的)演示了基本的使用:Dim barcodes As New System.Collections.ArrayList
BarcodeImaging.FullScanPage(barcodes, Me.PictureBox1.Image, 100)
If barcodes.Count > 0 Then
' Found one or more barcodes ...
numscans两个函数参数显示多少像素的乐队应该跨越或向下扫描图像。有了一个较大的数字,代码发现更多的条形码,但当然,也将运行速度稍慢。一般50 - 100扫描将确定找到一个完整的页面图像的所有条码。FullScanPage和ScanPage之间的区别
FullScanPage总是扫描水平和垂直方向,并尝试检测所有支持的条码类型。如果您知道,您的输入材料总是在同一方向扫描,或如果你不需要检测所有类型的条码,可以使你的程序使用ScanPage运行更快。
的额外参数的方向和类型,您可以微调条码检测:方向:可ScanDirection.Vertical或ScanDirection.Horizontal。如果你期望的条形码旋转90度的垂直竖线,或横向条码检测使用。类型:通BarcodeType.All检测到所有支持的条码类型,或你可以指定一个或多个特定的条码类型,这样:ScanPage(ref CodesRead, bmp, numscans, ScanDirection.Vertical,
BarcodeType.Code39 | BarcodeType.Code128);
支持的类型CODE39,EAN和CODE128。 EAN的读者会发现UPC代码。兴趣点EAN的读者还读了2个或5个补充条码经常发现图书和期刊的数字。屏幕截图所示,将返回的补充条码,作为一个单独的条码与quot开始的字符串; Squot。CODE128读者混合代码页支持在样品图像Code128test CodeC.png序号启动代码C,但最后一个数字是添加代码B。代码使用了更先进的方法测量quot;窄栏widthquot比qlipoth Liedblad的版本。阅读时EAN和CODE128,这应该让更好的检出率。 CODE39,我们只需要区分狭隘的和广泛的酒吧,但其他条码类型使用四种不同的栏宽度。我已经添加的quot概念;条码zonesquot;,允许在同一扫描线的不同规模的条码检测。在Code128test CodeC.png,这使得该软件读取的序列号和UPC码,印方方。参考文献
我用下面的引用,而写作这个项目:为了实现EAN的检测:{A6}维基百科的文章。实施代码128:IDAutomation.com公司,用于测试发表{A7}。历史2009年10月5日,日:原件。2009年10月19日:改进CODE39检测,修复的问题。添加VB.NET条码检测类翻译和亚历山德罗Gubbiotti提供的COM接口。
|贝伦德恩格尔布雷希特