반응형

 

 

지금까지 바코드의 값을 읽는 것까지 되었다.

이제는 이미지에서 바코드가 있는 위치를 얻어서 표시를 하고 싶어졌다.

그래서 바코드의 위치를 찾는 방법을 알아보았다.

 

아래에 그 예제 코드를 추가하였다.

result.ResultPoints의 값을 이용해 barcode의 위치를 얻을 수 있다.

[0].X, [0].Y : Top left

[2].X, [2].Y : Bottom right

 

이 위치를 이용하여 Rectangle로 이미지에 위치를 표시하였다.

 

그리고 pictureBoxIplImage의 Image를 update 하여 화면에 표시하였다.

 

using OpenCvSharp;
using ZXing;

private void btnBarcode_Click(object sender, EventArgs e)
{
  src = Cv2.ImRead("c:\\tmp\\inkscape.png", ImreadModes.Color);
  pictureBoxIplImage.ImageIpl = src;
  BarcodeReader reader = new BarcodeReader();
  Result result = reader.Decode((Bitmap)pictureBoxIplImage.Image);
  if (result != null)
  {
    decoded = "Decode : " + result.ToString() + "\r\nType : " + result.BarcodeFormat.ToString();

    // Get Barcode position 
    decoded += "\r\n" + (int)result.ResultPoints[0].X + ", " + (int)result.ResultPoints[0].Y;
    decoded += "\r\n" + (int)result.ResultPoints[2].X + ", " + (int)result.ResultPoints[2].Y;

    // Barcode position display
    Cv2.Rectangle(src, new Rect((int)(result.ResultPoints[0].X), (int)(result.ResultPoints[0].Y),
      (int)(result.ResultPoints[2].X - result.ResultPoints[0].X), (int)(result.ResultPoints[2].Y - result.ResultPoints[0].Y)),
      Scalar.Blue, 10, LineTypes.Link4);

    // PictureBoxIpl update
    pictureBoxIplImage.ImageIpl = src;
    
    if (decoded != "")
    { 
      textBoxResult.Text = decoded;
    } 
  } 
}

 

 

아래와 같이 파란색으로 바코드의 위치를 표시하게 된다.

 

 

 

 

 

 

728x90
반응형

'공부 > C#' 카테고리의 다른 글

210307 C# 커서위치 제어 프로그램  (0) 2021.03.07
210212 OpenCV C# PictureBoxIpl SizeMode  (0) 2021.02.12
210202 C# Barcode reader project (1)  (0) 2021.02.10
210202 OpenCV PictureBoxlpl  (0) 2021.02.09
210128 Pdf2Image winform project (4)  (0) 2021.02.07
반응형

 

 

Image에서 Barcode를 인식하는 프로그램을 구현해 보았다.

Barcode가 있는 이미지를 만들기 위해 InkScape를 이용하였다.

 

kgkang.tistory.com/146?category=422967

 

210204 잉크스케이프 바코드 생성

잉크스케이프(Inkscape)에서 바코드를 생성하는 방법. 바코드가 있는 PDF 문서를 생성하기 위해 바코드를 생성하기 위해 바코드 생성 메뉴를 찾았다. "확장기능 >> 렌더 >> 바코드" 에서 원하는 바코

kgkang.tistory.com

 

바코드 인식은 ZXing 라이브러리를 사용하였다.

그래서 Nuget으로 ZXing 라이브러리를 설치한다.

 

 

ZXing.Net 이 설치되었다.

 

 

Barcode 버튼을 만들고 코드를 추가한다.

pictureBoxlpl의 이름을 아래와 같이 지정하고 코딩하였다.

 

 

아래와 같이 코딩하여 간단히 바코드를 인식할 수 있다.

이미지를 읽고 표시할 때는 OpenCV를 사용하였다.

 

using OpenCvSharp;
using ZXing;

private void btnBarcode_Click(object sender, EventArgs e)
{
  src = Cv2.ImRead("c:\\tmp\\inkscape.png", ImreadModes.Color);
  pictureBoxIplImage.ImageIpl = src;
  BarcodeReader reader = new BarcodeReader();
  Result result = reader.Decode((Bitmap)pictureBoxIplImage.Image);
  if (result != null)
  {
    decoded = "Decode : " + result.ToString() + "\r\nType : " + result.BarcodeFormat.ToString();
    if (decoded != "")
    { 
      textBoxResult.Text = decoded;
    } 
  } 
  else 
    MessageBox.Show("바코드나 QR코드를 비추세요!");
}

 

아래 이미지는 실제 사용한 코드를 화면 캡춰한 것이다.

 

 

아래와 같이 바코드가 인식되어 출력된다. 

바코드의 내용은 Inkscape, Type은 DATA_MATRIX 이다.

 

 

 

728x90
반응형

'공부 > C#' 카테고리의 다른 글

210212 OpenCV C# PictureBoxIpl SizeMode  (0) 2021.02.12
210208 C# Barcode reader project (2)  (1) 2021.02.11
210202 OpenCV PictureBoxlpl  (0) 2021.02.09
210128 Pdf2Image winform project (4)  (0) 2021.02.07
210126 Pdf2Image winform project (3)  (0) 2021.02.05
반응형

 

 

잉크스케이프(Inkscape)에서 바코드를 생성하는 방법.

바코드가 있는 PDF 문서를 생성하기 위해 바코드를 생성하기 위해 바코드 생성 메뉴를 찾았다.

 

"확장기능 >> 렌더 >> 바코드" 에서 원하는 바코드를 선택해서 생성할 수 있다. 

 

 

바코드의 종류로 QR코드, 고전적, 자료행렬 이 있다.

이 중 자료행렬을 선택해서 만들어 보았다.

 

 

문자열을 입력하고 크기를 설정하면 아래와 같은 2D 바코드가 생성된다.

 

 

 

 

 

 

728x90
반응형

+ Recent posts