Python 코드 스캔 도구의 예제 코드 구현
1. 사례 분석
우리는 먼저 코드 스캔 도구를 실현하려면 어떤 조작을 해야 하는지 생각해 보자.코드를 스캔하는 과정에서 우리는 어떻게 휴대전화나 컴퓨터가 QR코드를 식별하는지 카메라를 켜야 한다.그래서 우리는 두 가지 관건적인 절차를 실현해야 한다. 그것이 바로 카메라를 호출하고 QR코드를 식별하는 것이다.
이 두 가지 조작은 각각 두 개의 모듈에 대응했다. 그것이 바로opencv와pyzbar이다. 그 중에서opencv는 인텔의 컴퓨터 시각 처리 모듈이고pyzbar는 QR코드를 해석하는 모듈이다.
환경
환경은python 환경과 모듈을 포함합니다.내 환경은 다음과 같습니다.
시스템: Windows 10
python:python 3.7.9
opencv:opencv-python-4.4.0.44
pyzbar:pyzbar-0.1.8
모듈 설치는 매우 간단합니다. 우리는 직접 pip로 설치하고 먼저 opencv 모듈을 설치합니다.
pip install opencv-python
그리고 pyzbar 모듈:
pip install pyzbar
설치 버전이 지정되지 않으면 최신 버전이 자동으로 설치됩니다.모듈을 설치한 후에 우리는 코드 스캔 도구를 실현할 수 있다.3. QR코드 식별
pyzbar 모듈이 생긴 후에 우리가 QR코드를 식별하는 작업은 매우 간단하다. 우선 QR코드를 준비해야 한다.QR코드가 있으면 다음과 같이 해석할 수 있습니다.
import cv2
from pyzbar import pyzbar
# 1、
qrcode = cv2.imread('qrcode.jpg')
# 2、
data = pyzbar.decode(qrcode)
print(data)
# 3、 data
text = data[0].data.decode('utf-8')
print(text)
위에서 우리는 두 번 해석하여 처음으로 데이터를 얻었다. 우리는 먼저 데이터가 어떻게 생겼는지 보았다.
[Decoded(data=b'http://weixin.qq.com/r/vC_fhynEKnRVrW3k93qu', type='QRCODE', rect=Rect(left=140, top=113, width=390, height=390), polygon=[Point(x=140, y=113), Point(x=140, y=503), Point(x=530, y=503), Point(x=530, y=113)])]
목록을 볼 수 있고 목록의 첫 번째 데이터는 URL의 정보를 포함합니다.그래서 우리는 아래의 코드를 통해 다시 해석해야 한다.
text = data[0].data.decode('utf-8')
이렇게 하면 우리는 QR코드에 포함된 정보를 얻을 수 있다.다음에 사용하기 편리하도록 위의 코드를 함수로 작성할 수 있습니다.
def scan_qrcode(img_path):
qrcode = cv2.imread(img_path)
data = pyzbar.decode(qrcode)
return data[0].data.decode('utf-8')
다음은 카메라를 어떻게 호출하는지 다시 봅시다.4. 카메라 호출
Opencv에서 비디오를 읽는 데 VideoCapture 클래스를 제공합니다. 카메라를 호출할 수도 있습니다.카메라 호출 절차는 다음과 같습니다.
import cv2
#
cap = cv2.VideoCapture(0)
while True:
#
ret, frame = cap.read()
#
cv2.imshow('scan qrcode', frame)
#
key = cv2.waitKey(10)
# q
if key == ord('q'):
break
#
cv2.destroyAllWindows()
위의 코드를 직접 실행해 보세요. 효과는 마치 자신의 전면 카메라를 켠 것과 같습니다.현재 카메라를 호출하여 우리는 두 부분의 코드를 결합시킬 수 있다.
5. 코드 스캔 도구 구현
우리 코드 스캔 도구의 주체 부분은 카메라를 호출하는 작업이다. 우리는 읽은 모든 프레임의 화면을 분석하고 결과를 분석한 후에 출력하고 종료해야 한다.구체적인 코드는 다음과 같습니다.
import cv2
from pyzbar import pyzbar
def scan_qrcode(qrcode):
data = pyzbar.decode(qrcode)
return data[0].data.decode('utf-8')
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
cv2.imshow('scan qrcode', frame)
#
text = None
try:
text = scan_qrcode(frame)
except Exception as e:
pass
if text:
print(text)
break
key = cv2.waitKey(10)
if key == ord('q'):
break
cv2.destroyAllWindows()
위에서 저희가 scan_qrcode 함수를 수정했습니다. 원래의 그림 경로에서 직접 그림 대상에 전달되었습니다.VideoCapture 객체를 통해 가져온 그림 프레임과 cv2를 통해서입니다.imread에서 가져온 그림은 같은 데이터 형식입니다.위의 관건적인 단계는 QR코드의 조작을 해석하는 것이다.먼저 텍스트를 정의합니다. 해석 과정에서 QR코드가 없으면 이상이 발생할 수 있기 때문에try-except 문장으로 처리합니다.if를 통해text의 내용을 판단하는 방법은 우리가 진정으로 데이터를 해석해야만 프로그램이 결과를 출력하고 프로그램을 종료할 수 있습니다.
이 Python 디코딩 도구 구현에 관한 글은 여기까지 소개되었습니다. 더 많은 python 디코딩 도구 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.