Member 14368876 Ответов: 0

Как декодировать определенную область на изображении с помощью ручного выбора?


У меня есть изображение с несколькими штрих-кодами внутри коробки с картинками.

Я понятия не имею, как выбрать конкретную область штрих-кода и декодировать ее.
Я сделал функцию high light, но после того, как я высоко осветил штрих-код, он покажет мне какую-то ошибку, например "прямоугольник обрезки больше входного изображения". Я застрял на этих нескольких днях и понятия не имею, как это сделать.

Я использую библиотеку DLL IronBarcode для декодирования.

Что я уже пробовал:

private Rectangle Rect = new Rectangle();
private Brush selectionBrush = new SolidBrush(Color.FromArgb(128, 72, 145, 220));

private void IronBarcode()
{
   if (pcbox.Image != null)
    {
      BarcodeResult[] ImageResults=BarcodeReader.ReadAllBarcodes("barcode.jpg", 
      BarcodeEncoding.All,BarcodeReader.BarcodeRotationCorrection.Low, 
      BarcodeReader.BarcodeImageCorrection.DeepCleanPixels);

        foreach (var PageResult in ImageResults)
        {
          string Value = PageResult.Value;
          BarcodeEncoding BarcodeType = PageResult.BarcodeType;

          decoded += "Decode: " + PageResult.Value + Type: " + BarcodeType";    
        }
           if (decoded != "")
           {
              txtoutput.Text = decoded;
           }
    }
}
    

private void pcbox_Paint(object sender, PaintEventArgs e)
{
// Draw the rectangle...
   if (pcbox.Image != null)
   {
      if (Rect != null && Rect.Width > 0 && Rect.Height > 0)
      {
      e.Graphics.FillRectangle(selectionBrush, Rect);
      }
   }
}

private void pcbox_MouseDown(object sender, MouseEventArgs e)
{
// Determine the initial rectangle coordinates...
      RectStartPoint = e.Location;
      Invalidate();
}
  
private void pcbox_MouseMove(object sender, MouseEventArgs e)
{
   if (e.Button != MouseButtons.Left)
   return;
       Point tempEndPoint = e.Location;
   Rect.Location = new Point(
       Math.Min(RectStartPoint.X, tempEndPoint.X),
       Math.Min(RectStartPoint.Y, tempEndPoint.Y));
   Rect.Size = new Size(
       Math.Abs(RectStartPoint.X - tempEndPoint.X),
       Math.Abs(RectStartPoint.Y - tempEndPoint.Y));
       pcbox.Invalidate();
}

private void pcbox_MouseUp(object sender, MouseEventArgs e)
{
  if (e.Button == MouseButtons.Right)
  if (Rect.Contains(e.Location))
  {
     BarcodeResult[] InvoiceResults = 
     BarcodeReader.ReadAllBarcodesInCropArea("barcode.jpg",Rect, 
     BarcodeEncoding.All, BarcodeReader.BarcodeRotationCorrection.Low, 
     BarcodeReader.BarcodeImageCorrection.None);

        foreach (var rs in InvoiceResults)
        {
           txtoutput.Text = r s.Text;
        }

   }
}









Я хочу только декодировать конкретный штрих-код, который я выбрал.
[![Введите описание изображения здесь][1]][1]


[1]: https://i.stack.imgur.com/AawkH.png

0 Ответов