亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#使用ZBar實(shí)現(xiàn)識(shí)別條形碼

 更新時(shí)間:2023年07月24日 08:17:47   作者:2206  
目前主流的識(shí)別庫(kù)主要有ZXing.NET和ZBar,本文主要介紹的是如何使用ZBar庫(kù)實(shí)現(xiàn)識(shí)別條形碼功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下

一.識(shí)別庫(kù)

目前主流的識(shí)別庫(kù)主要有ZXing.NET和ZBar,這里我使用的是ZBar,ZXing.NET也試過(guò),同等條件下,識(shí)別率不高。

ZBar相關(guān)類庫(kù)包括:libzbar.dll,libzbar-cil.dll,libiconv-2.dll;

很奇怪為什么不能直接引用libzbar.dll,實(shí)際使用時(shí)引用的是libzbar-cil.dll,libiconv-2.dll是libzbar-cil.dll用來(lái)映射libzbar.dll的。

二.從一張圖片中提取多個(gè)條形碼

先上截圖:

需要提取條形碼的圖片:

識(shí)別結(jié)果

三.主要代碼

/// <summary>
        /// 條碼識(shí)別
        /// </summary>
        private void ScanBarCode(string fileName)
        {
            DateTime now = DateTime.Now;
            Image primaryImage = Image.FromFile(fileName);
            Bitmap pImg = MakeGrayscale3((Bitmap)primaryImage);
            using (ZBar.ImageScanner scanner = new ZBar.ImageScanner())
            {
                scanner.SetConfiguration(ZBar.SymbolType.None, ZBar.Config.Enable, 0);
                scanner.SetConfiguration(ZBar.SymbolType.CODE39, ZBar.Config.Enable, 1);
                scanner.SetConfiguration(ZBar.SymbolType.CODE128, ZBar.Config.Enable, 1);
                List<ZBar.Symbol> symbols = new List<ZBar.Symbol>();
                symbols = scanner.Scan((Image)pImg);
                if (symbols != null && symbols.Count > 0)
                {
                    string result = string.Empty;
                    symbols.ForEach(s => result += "條碼內(nèi)容:" + s.Data + " 條碼質(zhì)量:" + s.Quality + Environment.NewLine);
                    MessageBox.Show(result);
                }
            }
        }
        /// <summary>
        /// 處理圖片灰度
        /// </summary>
        /// <param name="original"></param>
        /// <returns></returns>
        public static Bitmap MakeGrayscale3(Bitmap original)
        {
            //create a blank bitmap the same size as original
            Bitmap newBitmap = new Bitmap(original.Width, original.Height);
            //get a graphics object from the new image
            Graphics g = Graphics.FromImage(newBitmap);
            //create the grayscale ColorMatrix
            System.Drawing.Imaging.ColorMatrix colorMatrix = new System.Drawing.Imaging.ColorMatrix(
               new float[][]
              {
                 new float[] {.3f, .3f, .3f, 0, 0},
                 new float[] {.59f, .59f, .59f, 0, 0},
                 new float[] {.11f, .11f, .11f, 0, 0},
                 new float[] {0, 0, 0, 1, 0},
                 new float[] {0, 0, 0, 0, 1}
              });
            //create some image attributes
            ImageAttributes attributes = new ImageAttributes();
            //set the color matrix attribute
            attributes.SetColorMatrix(colorMatrix);
            //draw the original image on the new image
            //using the grayscale color matrix
            g.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height),
               0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes);
            //dispose the Graphics object
            g.Dispose();
            return newBitmap;
        }

四.注意事項(xiàng)

如果條碼識(shí)別率不高,考慮是圖片的DPI不夠。我的項(xiàng)目初期使用的是500萬(wàn)像素的高拍儀,拍出來(lái)的圖片識(shí)別率始終不高,DPI為96。后來(lái)更換為800萬(wàn)像素的高拍儀,DPI為120,識(shí)別率從60%直接上升到95%+。當(dāng)然,也需要對(duì)圖片做一些裁剪。另外,灰度處理是必須的,可減少拍攝照片時(shí)反光引起的識(shí)別率不高問(wèn)題。

到此這篇關(guān)于C#使用ZBar實(shí)現(xiàn)識(shí)別條形碼的文章就介紹到這了,更多相關(guān)C# ZBar識(shí)別條形碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#中Task任務(wù)類用法詳解

    C#中Task任務(wù)類用法詳解

    這篇文章主要為大家詳細(xì)介紹了C#中Task任務(wù)類用法的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • c# 垃圾回收(GC)優(yōu)化

    c# 垃圾回收(GC)優(yōu)化

    這篇文章主要介紹了c# 垃圾回收(GC)優(yōu)化的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下
    2021-02-02
  • C#數(shù)字圖象處理之膚色檢測(cè)的方法

    C#數(shù)字圖象處理之膚色檢測(cè)的方法

    這篇文章主要介紹了C#數(shù)字圖象處理之膚色檢測(cè)的方法,可實(shí)現(xiàn)針對(duì)膚色的檢測(cè)功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • C#實(shí)現(xiàn)將選中復(fù)選框的信息返回給用戶的方法

    C#實(shí)現(xiàn)將選中復(fù)選框的信息返回給用戶的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)將選中復(fù)選框的信息返回給用戶的方法,涉及C#針對(duì)復(fù)選框操作的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C#中Linq延遲查詢的例子

    C#中Linq延遲查詢的例子

    這篇文章主要介紹了C#中Linq延遲查詢的例子,本文用一個(gè)實(shí)例來(lái)講解延遲查詢的使用,需要的朋友可以參考下
    2015-06-06
  • C#中關(guān)于可空類型的小知識(shí)

    C#中關(guān)于可空類型的小知識(shí)

    這篇文章主要介紹了C#中關(guān)于可空類型的小知識(shí),本文講解可空類型運(yùn)算的小技巧,需要的朋友可以參考下
    2015-04-04
  • winform簡(jiǎn)單緩存類實(shí)例

    winform簡(jiǎn)單緩存類實(shí)例

    這篇文章主要介紹了winform簡(jiǎn)單緩存類,涉及C#緩存使用技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-09-09
  • 跳一跳自動(dòng)跳躍C#代碼實(shí)現(xiàn)

    跳一跳自動(dòng)跳躍C#代碼實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了跳一跳自動(dòng)跳躍C#代碼實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C#多線程基礎(chǔ)知識(shí)匯總

    C#多線程基礎(chǔ)知識(shí)匯總

    這篇文章主要介紹了C#多線程基礎(chǔ)知識(shí)的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C# WebService發(fā)布以及IIS發(fā)布

    C# WebService發(fā)布以及IIS發(fā)布

    這篇文章主要介紹了C# WebService發(fā)布以及IIS發(fā)布的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-07-07

最新評(píng)論