Python에서 OpenCV를 사용하여 QR 코드 스캐너 만들기

Manav Narula 2023년1월30일
  1. QRCodeDetector 클래스를 사용하여 Python에서 OpenCV를 사용하여 QR 코드 스캐너 만들기
  2. 결론
Python에서 OpenCV를 사용하여 QR 코드 스캐너 만들기

우리는 모두 다양한 제품에 있는 바코드에 익숙합니다. 바코드는 모스 부호를 기반으로 정보를 선과 공백으로 표현하여 저장하고 데이터를 수평으로 저장합니다.

최근에는 QR코드도 인기를 얻고 있습니다. QR 코드는 상자에 저장되며 몇 개의 점과 함께 검은색과 흰색 사각형의 조합으로 표시됩니다.

또한 모스 부호를 기반으로 하기 때문에 일종의 바코드 매트릭스라고 볼 수 있습니다.

QR 코드는 저장 측면에서 기존 바코드보다 우위에 있습니다. 두 방향으로 데이터를 저장합니다. 따라서 바코드보다 더 많은 정보를 포함할 수 있습니다.

이 정보는 최대 4,000자의 URL, 연락처 및 기타 정보일 수 있습니다. 요즘 거의 모든 휴대폰에 QR 코드 스캐너 응용 프로그램이 있습니다.

이 튜토리얼은 Python에서 OpenCV 라이브러리를 사용하여 QR 코드 스캐너를 만드는 방법을 보여줍니다.

OpenCV 라이브러리에는 이미지를 효율적으로 저장하고 처리할 수 있는 다양한 기능과 클래스가 포함되어 있습니다. 프레임에 미리 정의된 다양한 기술을 적용할 수 있습니다.

QRCodeDetector 클래스를 사용하여 Python에서 OpenCV를 사용하여 QR 코드 스캐너 만들기

OpenCV 라이브러리 버전 4.0.0은 QRCodeDetector 클래스를 도입했습니다. 이 클래스에는 QR 코드에 대한 이미지를 감지하고 스캔하는 데 사용할 수 있는 메서드가 포함되어 있습니다.

다양한 방법을 사용하여 단일 및 여러 QR 코드를 스캔할 수 있습니다.

이 클래스의 detect() 메서드는 이미지에서 QR 코드를 스캔하는 데 사용됩니다. QR 코드가 포함된 상자를 찾습니다. decode() 메서드는 감지된 QR 코드를 디코딩합니다.

주어진 이미지에서 여러 QR 코드를 감지하려면 detectMulti()decodeMulti() 함수를 사용할 수 있습니다. 곡면에서 코드를 감지하고 디코딩하기 위해 각각 detectCurved()decodeCurved() 메서드를 사용합니다.

detectandDecode() 함수를 사용하여 이미지에서 코드를 동시에 감지하고 디코딩할 수 있습니다. 이 메서드의 경우 detectandDecodeCurved()detectandDecodeMulti() 메서드도 존재합니다.

이제 이 클래스를 사용하여 매우 간단한 QR 코드를 만들고 다음 이미지의 QR 코드를 스캔해 보겠습니다.

스캔할 QR 코드

아래 코드를 참조하십시오.

import cv2

img = cv2.imread("2.jpg")
det = cv2.QRCodeDetector()
info, box_coordinates, _ = det.detectAndDecode(img)

if box_coordinates is None:
    print("No Code")
else:
    print(info)

if box_coordinates is not None:
    box_coordinates = [box_coordinates[0].astype(int)]
    n = len(box_coordinates[0])
    for i in range(n):
        cv2.line(
            img,
            tuple(box_coordinates[0][i]),
            tuple(box_coordinates[0][(i + 1) % n]),
            (0, 255, 0),
            3,
        )

cv2.imshow("Output", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

출력:

http://sampleurl.com

OpenCV를 사용하여 스캔한 QR 코드

위의 예에서 QRCodeDetector 클래스의 객체를 만들고 detectandDecode() 함수를 사용하여 주어진 이미지에서 QR 코드를 스캔하고 디코딩했습니다. 이 함수는 표시되는 QR 코드의 정보를 반환합니다.

또한 QR 코드를 둘러싼 상자의 좌표를 반환했습니다. 이 좌표를 사용하여 line() 함수를 사용하여 이미지에 경계를 그렸습니다.

최종 이미지가 표시되고 waitKey()destroyAllWindows() 함수를 사용하여 이 창이 자동으로 닫히는 것을 방지하고 사용자가 닫기 전에 일부 키를 누를 때까지 기다립니다.

이 예에서는 디렉토리에서 이미지를 읽고 QR 코드를 스캔했습니다. 웹캠을 사용하고 거기에서 이미지를 읽음으로써 더 대화식으로 만들 수 있습니다.

OpenCV는 웹캠에서 영상을 캡처하고 읽을 수 있는 VideoCapture 클래스를 제공합니다.

결론

이 튜토리얼은 Python의 OpenCV 라이브러리를 사용하여 간단한 QR 코드 스캐너를 만드는 방법을 보여줍니다. QR 코드의 기본 사항, 바코드와의 비교 및 ​​저장할 수 있는 정보에 대해 논의하는 것으로 시작했습니다.

이미지에서 QR 코드를 감지하고 디코딩하는 다양한 방법을 제공하는 OpenCV 라이브러리의 QRCodeDetector 클래스에 대해 간략히 논의했습니다. 주어진 이미지에서 QR 코드를 스캔하고 디코딩하기 위해 이 클래스를 사용하는 간단한 QR 코드 스캐너의 예를 제공했습니다.

작가: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

관련 문장 - Python OpenCV