如何在 C# 中設置條碼裁剪區域

如何在 C# 中定義條碼裁切區域以加快讀取速度

This article was translated from English: Does it need improvement?
Translated
View the article in English

使用 IronSoftware.Drawing.Rectangle 定義裁切區域,將 IronBarcode 的掃描區域限制在特定的影像區域,透過僅專注於相關區域,顯著提高條碼讀取效能並減少錯誤。

IronBarcode最重要的功能之一是能夠指定作物區域。 此功能使IronBarcode能夠使用 IronSoftware.Drawing.Rectangle 對象,僅讀取影像中由裁切區域指定的特定條碼或區域。 使用此功能不僅可以減少閱讀錯誤,還可以提高閱讀效率。 當處理多頁文件或條碼位置可預測的高解析度影像時,這種技術尤其有價值。

當處理具有多個條碼或複雜背景的影像時,定義裁剪區域對於優化條碼讀取速度至關重要。 透過限制掃描區域,處理速度可以比掃描整個影像快 5 倍,同時還能減少非條碼元素的誤報。

快速入門:定義並應用作物區域以更快地讀取條碼

只需幾秒鐘即可建立裁剪矩形並將其匯入IronBarcode無需額外設置,操作便捷。 看看使用 BarcodeReaderOptions 將掃描範圍限制在特定影像區域是多麼容易。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/BarCode

    PM > Install-Package BarCode
  2. 複製並運行這段程式碼。

    var results = IronBarCode.BarcodeReader.Read("image.png", new IronBarCode.BarcodeReaderOptions { CropArea = new IronSoftware.Drawing.Rectangle(x: 50, y: 100, width: 300, height: 150) });
  3. 部署到您的生產環境進行測試

    今天就在您的專案中開始使用免費試用IronBarcode

    arrow pointer

如何找到影像中裁剪區域的座標和大小?

有很多方法可以找到圖像中某一點的座標。 一種方法是使用電腦上的畫圖應用程式載入圖片。 若要取得裁切區域的第一個座標,請將遊標移到首選的第一個位置,即 Rectangle 的左上角,然後從螢幕左下角的應用程式取得 x、y 座標。 然後,找到第二個點,它將是 Rectangle 的右下角。 請參考下圖以便更清楚地理解。

對於更進階的場景,您還可以考慮使用 GIMP 或 Photoshop 等影像編輯軟體,它們提供精確的像素座標和測量工具。 有些開發者喜歡使用線上座標查找工具,或建立簡單的 HTML/ JavaScript實用程序,在滑鼠懸停在圖像上時顯示滑鼠座標。

Crop region diagram showing rectangular area with corner coordinates (x1,y1) and (x2,y2) and dimension calculations

我可以使用哪些工具來決定座標?

然後可以將座標值用作 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);
$vbLabelText   $csharpLabel

此座標系統與 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);
}
$vbLabelText   $csharpLabel

從上面的程式碼片段中,我們使用了 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 中的裁剪區域在處理具有多個條碼的圖像、複雜背景、多頁文件或條碼位置一致且可預測的高解析度圖像時尤其有價值。

Hairil Hasyimi Bin Omar
軟體工程師
和所有优秀的工程师一样,Hairil 是個努力学习者。他正在细化自己的 C# 、Python 和 Java 知识,将这些知识應用于 Iron Software 各個团队成员以增加价值。Hairil 自马来西亚 Universiti Teknologi MARA 加入 Iron Software 团队,并以化学与工艺工程学士学位毕业。
準備好開始了嗎?
Nuget 下載 2,108,094 | 版本: 2026.3 剛剛發布
Still Scrolling Icon

還在捲動嗎?

想要快速證明? PM > Install-Package BarCode
執行範例 看您的字串變成 BarCode。