- 요구 사항
- Raspberry Pi에 OpenCV 설치
- 기타 필수 패키지 설치
- Raspberry pi QR 코드 리더 하드웨어 설정
- Raspberry Pi QR 코드 리더 용 Python 코드
- Raspberry Pi QR 코드 스캐너 테스트
QR 코드 (빠른 응답 코드)는 위치 데이터, 식별자 또는 웹 사이트 나 앱을 식별하는 추적기 등과 같이 첨부 된 항목에 대한 정보를 포함하는 매트릭스 바코드의 한 유형입니다. 2D 이미지 형태이고 다른 패턴을 가진 레이블. QR 코드 및 QR 코드 생성 방법에 대해 자세히 알아 보려면 이전 자습서를 따르십시오.
이 튜토리얼에서는 OpenCV 및 ZBar 라이브러리를 사용하여 Raspberry Pi 기반 QR 코드 스캐너 를 빌드 할 것 입니다. ZBar는 다양한 유형의 바코드 및 QR 코드를 감지하고 디코딩하는 데 가장 적합한 라이브러리입니다. OpenCV는 비디오 스트림에서 새 프레임을 가져와 처리하는 데 사용됩니다. OpenCV가 프레임을 캡처하면 바코드를 디코딩하고 각 정보로 변환하는 ZBar와 같은 전용 Python 바코드 디코딩 라이브러리로 전달할 수 있습니다.
요구 사항
- Raspberry Pi 3 (모든 버전)
- Pi 카메라 모듈
이 Raspberry Pi 3 QR 코드 스캐너를 진행하기 전에 먼저 OpenCV, 바코드 디코딩 라이브러리 ZBar, imutils 및이 프로젝트의 기타 종속성을 설치해야합니다. OpenCV는 여기에서 디지털 이미지 처리에 사용됩니다. 디지털 이미지 처리의 가장 일반적인 응용 분야는 물체 감지, 얼굴 인식 및 인원 계수기입니다.
Raspberry Pi에 OpenCV 설치
여기에서 OpenCV 라이브러리는 Raspberry Pi QR 스캐너에 사용됩니다. OpenCV를 설치하려면 먼저 Raspberry Pi를 업데이트하십시오.
sudo apt-get 업데이트
그런 다음 Raspberry Pi에 OpenCV를 설치하는 데 필요한 종속성을 설치합니다.
sudo apt-get install libhdf5-dev -y sudo apt-get install libhdf5-serial-dev –y sudo apt-get install libatlas-base-dev –y sudo apt-get install libjasper-dev -y sudo apt-get install libqtgui4 –y sudo apt-get 설치 libqt4-test –y
그런 다음 아래 명령을 사용하여 Raspberry Pi에 OpenCV를 설치하십시오.
pip3 install opencv-contrib-python == 4.1.0.25
우리는 이전에 Raspberry pi와 함께 OpenCV를 사용했고 이에 대한 많은 튜토리얼을 만들었습니다.
- CMake를 사용하여 Raspberry Pi에 OpenCV 설치
- Raspberry Pi 및 OpenCV를 사용한 실시간 얼굴 인식
- Raspberry Pi 및 OpenCV를 사용한 번호판 인식
- OpenCV 및 Raspberry Pi를 사용한 군중 크기 추정
우리는 또한 초급 레벨부터 시작하는 일련의 OpenCV 튜토리얼을 만들었습니다.
기타 필수 패키지 설치
ZBar 설치
Zbar는 다양한 유형의 바코드 및 QR 코드를 감지하고 디코딩하는 데 가장 적합한 라이브러리입니다. 아래 명령을 사용하여 라이브러리를 설치하십시오.
pip3 설치 pyzbar
imutils 설치
imutils는 OpenCV를 사용하여 번역, 회전, 크기 조정, 골격 화 및 Matplotlib 이미지 표시와 같은 필수 이미지 처리 기능을보다 쉽게 만드는 데 사용됩니다. 아래 명령을 사용하여 imutils를 설치합니다.
pip3 설치 imutils
argparse 설치
아래 명령을 사용하여 argparse 라이브러리를 설치하십시오. argparse 는 명령 줄 인수를 구문 분석합니다.
pip3 설치 argparse
Raspberry pi QR 코드 리더 하드웨어 설정
여기에서는 Raspberry Pi 카메라를 사용하는 QR 코드 스캐너에 Raspberry Pi 및 Pi 카메라 만 필요하며 Raspberry Pi 에 제공된 카메라 슬롯에 카메라 리본 커넥터를 연결하기 만하면됩니다.
Pi 카메라 는 Raspberry Pi 감시 카메라, 방문자 모니터링 시스템, 주택 보안 시스템 등과 같은 다양한 흥미로운 프로젝트를 구축하는 데 사용할 수 있습니다.
Raspberry Pi QR 코드 리더 용 Python 코드
Raspberry Pi QR 리더 의 전체 코드 는 페이지 끝에 제공됩니다. Raspberry Pi를 프로그래밍하기 전에 코드를 이해합시다.
따라서 평소와 같이 필요한 모든 패키지를 가져 와서 코드를 시작합니다.
imutils.video에서 가져 오기 pyzbar에서 VideoStream 가져 오기 pyzbar import argparse import datetime import imutils import time import cv2
그런 다음 인수 구문 분석기를 구성하고 인수를 구문 분석하십시오. 명령 줄 인수에는 CSV 파일의 경로에 대한 정보가 포함됩니다. CSV (Comma Separated Values) 파일에는 비디오 스트림의 모든 바코드에 대한 타임 스탬프와 페이로드가 포함되어 있습니다.
ap = argparse.ArgumentParser () ap.add_argument ("-o", "--output", type = str, default = "barcodes.csv", help = "바코드가 포함 된 CSV 파일 출력 경로") args = vars (ap.parse_args ())
그런 다음 USB 웹캠을 사용하는 경우 비디오 스트림을 초기화하고 주석 처리 된 줄의 주석 처리를 제거하십시오.
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True).start () time.sleep (2.0)
이제 루프 내에서 비디오 스트림에서 프레임을 가져와 400 픽셀로 크기를 조정합니다. 프레임을 잡으면 pyzbar.decode 함수를 호출 하여 QR 코드를 감지하고 디코딩합니다.
frame = vs.read () frame = imutils.resize (frame, width = 400) barcodes = pyzbar.decode (frame)
이제 감지 된 바코드를 반복하여 바코드의 위치를 추출하고 이미지의 바코드 주위에 경계 상자를 그립니다.
바코드의 바코드: (x, y, w, h) = barcode.rect cv2.rectangle (frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
그런 다음 디코딩 ("utf-8") 기능을 사용하여 감지 된 바코드를 "utf-8"문자열로 디코딩 한 다음 barcode.type 함수를 사용하여 바코드 유형을 추출하십시오.
barcodeData = barcode.data.decode ("utf-8") barcodeType = barcode.type
그런 다음 추출 된 바코드 데이터와 바코드 유형을 text라는 변수에 저장하고 바코드 데이터를 그리고 이미지에 입력합니다.
text = "{} ({})". format (barcodeData, barcodeType) cv2.putText (frame, text, (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
이제 바코드 데이터 및 바코드 유형과 함께 출력을 표시합니다.
cv2.imshow ("바코드 리더", 프레임)
이제 마지막 단계에서 키 's'가 눌 렸는지 확인한 다음 메인 루프를 해제하고 정리 프로세스를 시작합니다.
key = cv2.waitKey (1) & 0xFF #`s` 키를 누르면 루프를 중단합니다. key == ord ("s"): break print ("clean up…") csv.close () cv2.destroyAllWindows () 대 stop ()
Raspberry Pi QR 코드 스캐너 테스트
설정이 준비되면 QR 코드 리더 프로그램을 시작합니다. 카메라의 라이브 뷰를 보여주는 창이 나타납니다. 이제 PI 카메라 앞에 바코드를 표시 할 수 있습니다. pi가 바코드를 디코딩 할 때 아래 이미지와 같이 바코드 데이터와 바코드 유형이 포함 된 빨간색 상자를 그 주위에 그립니다.
Raspberry Pi 보드와 Pi 카메라 또는 USB 카메라를 사용하여 Raspberry Pi 카메라 QR 코드 리더 를 쉽게 구축 할 수있는 방법 입니다.
이 프로젝트에 대한 작동 비디오와 전체 코드는 다음과 같습니다.