如何在 C# 中定義條碼裁切區域以加快讀取速度
使用 IronSoftware.Drawing.Rectangle 定義裁切區域,將 IronBarcode 的掃描區域限制在特定的影像區域,透過僅專注於相關區域,顯著提高條碼讀取效能並減少錯誤。
IronBarcode最重要的功能之一是能夠指定作物區域。 此功能使IronBarcode能夠使用 IronSoftware.Drawing.Rectangle 對象,僅讀取影像中由裁切區域指定的特定條碼或區域。 使用此功能不僅可以減少閱讀錯誤,還可以提高閱讀效率。 當處理多頁文件或條碼位置可預測的高解析度影像時,這種技術尤其有價值。
當處理具有多個條碼或複雜背景的影像時,定義裁剪區域對於優化條碼讀取速度至關重要。 透過限制掃描區域,處理速度可以比掃描整個影像快 5 倍,同時還能減少非條碼元素的誤報。
快速入門:定義並應用作物區域以更快地讀取條碼
只需幾秒鐘即可建立裁剪矩形並將其匯入IronBarcode無需額外設置,操作便捷。 看看使用 BarcodeReaderOptions 將掃描範圍限制在特定影像區域是多麼容易。
-
使用NuGet套件管理器安裝https://www.nuget.org/packages/BarCode
PM > Install-Package BarCode -
複製並運行這段程式碼。
var results = IronBarCode.BarcodeReader.Read("image.png", new IronBarCode.BarcodeReaderOptions { CropArea = new IronSoftware.Drawing.Rectangle(x: 50, y: 100, width: 300, height: 150) }); -
部署到您的生產環境進行測試
今天就在您的專案中開始使用免費試用IronBarcode
最簡工作流程(5個步驟)
- 下載用於讀取條碼的 C# 庫
- 在圖像中尋找作物區域的座標和大小
- 根據座標建立作物區域。
- 使用`Read`方法偵測並讀取條碼
- 將作物區域物件傳遞給該方法
如何找到影像中裁剪區域的座標和大小?
有很多方法可以找到圖像中某一點的座標。 一種方法是使用電腦上的畫圖應用程式載入圖片。 若要取得裁切區域的第一個座標,請將遊標移到首選的第一個位置,即 Rectangle 的左上角,然後從螢幕左下角的應用程式取得 x、y 座標。 然後,找到第二個點,它將是 Rectangle 的右下角。 請參考下圖以便更清楚地理解。
對於更進階的場景,您還可以考慮使用 GIMP 或 Photoshop 等影像編輯軟體,它們提供精確的像素座標和測量工具。 有些開發者喜歡使用線上座標查找工具,或建立簡單的 HTML/ JavaScript實用程序,在滑鼠懸停在圖像上時顯示滑鼠座標。
設定作物區域參考
我可以使用哪些工具來決定座標?
然後可以將座標值用作 Rectangle 物件的屬性。 物體的寬度可以定義為x2 - x1 ,高度可以定義為y2 - y1 。 使用條碼影像時,需要了解的是,座標從左上角 (0,0) 開始,並隨著向右(x 軸)和向下(y 軸)移動而增加。
幾種座標確定方法包括: -內建作業系統工具:Windows 畫圖、macOS 預覽 -瀏覽器開發者工具:檢查網頁圖片中的元素 專業軟體:Adobe Photoshop、GIMP -自訂實用程式:簡單的坐標檢視器應用程式 IronBarcode的調試功能:匯出具有座標疊加層的已處理影像
如何根據座標計算矩形尺寸?
確定了兩個角點後,計算尺寸就很簡單了。 矩形需要四個參數:x 座標、y 座標、寬度和高度。 以下是如何正確實例化作物區域的方法:
:path=/static-assets/barcode/content-code-examples/how-to/set-crop-region-instantiate-CropRegion.cs
using IronBarCode;
int x1 = 62;
int y1 = 29;
int x2 = 345;
int y2 = 522;
IronSoftware.Drawing.Rectangle crop1 = new IronSoftware.Drawing.Rectangle(x: x1, y: y1, width: x2-x1, height: y2-y1);
Imports IronBarCode
Private x1 As Integer = 62
Private y1 As Integer = 29
Private x2 As Integer = 345
Private y2 As Integer = 522
Private crop1 As New IronSoftware.Drawing.Rectangle(x:= x1, y:= y1, width:= x2-x1, height:= y2-y1)
此座標系統與 IronBarcode 的影像校正功能無縫配合,讓您僅對影像的特定區域套用濾鏡。
如何應用作物區域和讀取條碼?
一旦你定義了IronBarcode讀取的 CropRegions,你就可以將該物件作為屬性之一應用到 BarcodeReaderOptions 中,以及其他設定。 然後,它可以作為參數用於 BarcodeReader.Read() 方法。 以下程式碼片段展示了這個過程:
BarcodeReaderOptions 接受哪些參數?
BarcodeReaderOptions 類別提供對條碼讀取過程的全面控制。 除了作物種植區域外,您還可以配置:
-速度優化:透過速度設定平衡準確性和效能 -條碼類型:指定要搜尋的確切格式(支援的格式) -影像濾鏡:校正傾斜或損壞的條碼 -多執行緒:啟用並行處理以提高效能 -旋轉處理:自動偵測旋轉的條碼
如何處理裁切區域中的多個條碼結果?
當掃描包含多個條碼的裁切區域時, IronBarcode會傳回一系列結果。 每個結果都包含有價值的元數據,包括作物區域內的確切位置、條碼類型和解碼值。 以下是如何實施全面的作物區域處理:
:path=/static-assets/barcode/content-code-examples/how-to/set-crop-region-apply-CropRegion.cs
using IronBarCode;
using System;
int x1 = 62;
int y1 = 29;
int x2 = 345;
int y2 = 522;
IronSoftware.Drawing.Rectangle crop1 = new IronSoftware.Drawing.Rectangle(x: x1, y: y1, width: x2 - x1, height: y2 - y1);
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
CropArea = crop1
};
var result = BarcodeReader.Read("sample.png", options);
foreach (var item in result)
{
Console.WriteLine(item.Value);
}
Imports IronBarCode
Imports System
Private x1 As Integer = 62
Private y1 As Integer = 29
Private x2 As Integer = 345
Private y2 As Integer = 522
Private crop1 As New IronSoftware.Drawing.Rectangle(x:= x1, y:= y1, width:= x2 - x1, height:= y2 - y1)
Private options As New BarcodeReaderOptions() With {.CropArea = crop1}
Private result = BarcodeReader.Read("sample.png", options)
For Each item In result
Console.WriteLine(item.Value)
Next item
從上面的程式碼片段中,我們使用了 Rectangle 物件中的實例化 BarcodeReaderOptions 作為 CropArea 屬性。 然後,我們將此 BarcodeReaderOptions 物件作為 BarcodeReader.Read() 方法中的參數,將 CropArea 應用於映像並讀取其中的條碼。
先進作物區域技術
對於生產應用,請考慮以下高級策略:
1.動態作物區域:根據文件範本或 OCR 結果計算作物面積 2.多區域處理:處理單張影像中的多個裁切區域,以適應複雜的佈局。 3.效能最佳化:將作物區域與非同步處理結合,以實現最大吞吐量 4.錯誤處理:當在預期區域找不到條碼時,實作備用策略
處理PDF 文件時,您可以將裁切區域套用至特定頁面,從而大幅減少處理大型文件的時間。 這對於條碼位置標準化的發票、貨運標籤或表格尤其有用。
作物區域定義的最佳實踐
為了最大限度地提高作物種植區的效率:
-新增內邊距:在預期條碼位置周圍預留 10-20 像素,以應對輕微偏差 -全面測試:驗證裁切區域在整個文件集中是否有效 -文件座標:為您的申請維護一份常見作物區域的參考表。 -考慮縮放:考慮不同的影像解析度或 DPI 設置 -監控性能:追蹤處理時間以驗證作物區域的有效性
對於需要容錯的應用,可以採用兩遍掃描方法:先掃描裁切區域,如果在預期區域內未找到條碼,則回退到全影像掃描。
結論
定義作物區域是最佳化.NET應用程式中條碼讀取效能的有效方法。 透過將掃描區域限制在特定區域,可以在減少誤報的同時顯著提高掃描速度。 無論您是處理單張影像還是大量操作,裁剪區域都能提供生產環境所需的精確度和效能。
常見問題解答
什麼是 BarCode 裁切區域,為什麼要使用它?
條碼裁剪區域是 IronBarcode 在圖像中集中掃描的特定區域。通過使用IronSoftware.Drawing.Rectangle定義裁剪區域,您可以實現高達5倍的條碼讀取速度,同時通過限制掃描到您圖像的相關區域來減少錯誤。
如何定義條碼讀取的裁切區域?
您可以在 IronBarcode 中定義一個裁切區域,方法是建立一個具有特定座標 (x, y) 和尺寸 (寬度, 高度) 的 IronSoftware.Drawing.Rectangle 物件,然後在呼叫讀取方法時將其傳給 BarcodeReaderOptions.CropArea 屬性。
使用裁剪區域可望改善哪些效能?
與掃描整個圖像相比,IronBarcode 的裁剪區域功能可將條碼讀取性能提高 5 倍。這在處理多頁文件或條碼位置可預測的高解析度影像時尤其有利。
如何找到我的作物區域的正確坐標?
您可以使用 Microsoft Paint、GIMP 或 Photoshop 等影像編輯軟體找出裁切區域座標。只需開啟您的圖像,將游標移至所需區域的左上角,記下 x,y 坐標,然後尋找右下角坐標,即可確定 IronBarcode 中 Rectangle 的寬度和高度。
何時使用作物區特別有利?
IronBarcode 中的裁剪區域在處理具有多個條碼的圖像、複雜背景、多頁文件或條碼位置一致且可預測的高解析度圖像時尤其有價值。

