Welcome to RPi AI Camera repository
4. QR code
5. QR code
5. QR code5.1. Introduction to QR code5.2. Structure of QR code5.3. Characteristics of QR Code5.4. QR code creation and recognition
5.1. Introduction to QR code
QR code is a type of two-dimensional barcode. QR comes from the abbreviation of "Quick Response" in English, which means quick response. It comes from the inventor's hope that QR code can allow its content to be decoded quickly. QR code not only has large information capacity, high reliability and low cost, but also can represent a variety of text information such as Chinese characters and images. It has strong confidentiality and anti-counterfeiting properties and is very convenient to use. More importantly, the QR code technology is open source.
5.2. Structure of QR code
| Image | Analysis |
|---|---|
![]() | Positioning markings indicate the direction of the QR code. |
![]() | Alignment markings If the QR code is large, these additional elements help with positioning. |
![]() | Timing patternThrough these lines, the scanner can tell how big the matrix is. |
![]() | Version informationThis specifies the version number of the QR code being used. There are currently 40 different versions of QR codes. Versions used in the sales industry are usually 1-7. |
![]() | Format informationThe format pattern contains information about error tolerance and data mask patterns and makes scanning the code easier. |
![]() | Data and error correction keysThese patterns hold the actual data. |
![]() | Quiet zoneThis area is very important for the scanner, its function is to separate itself from the surroundings. |
5.3. Characteristics of QR Code
The data value in QR code contains repeated information (redundant value). Therefore, even if up to 30% of the QR code structure is destroyed, it will not affect the readability of the QR code. The storage space of QR code is up to 7089 bits or 4296 characters, including punctuation and special characters, which can be written into the QR code. In addition to numbers and characters, words and phrases (such as URLs) can also be encoded. As more data is added to the QR code, the code size increases and the code structure becomes more complex.
5.4. QR code creation and recognition
Note: The AI camera in this case does not have a computing power bonus, when the ordinary camera is called!
Source code path: /home/pi/yahboomcar_ws/src/yahboomcar_visual/simple_qrcode
Installation
xxxxxxxxxxpython3 -m pip install qrcode pyzbarsudo apt-get install libzbar-dev
Create
Create qrcode object
x
'''Parameter meaning:version: An integer between 1 and 40 that controls the size of the QR code (the minimum value is 1, which is a 12×12 matrix).If you want the program to determine it automatically, set the value to None and use the fit parameter.error_correction: Controls the error correction function of the QR code. The following 4 constants are possible.ERROR_CORRECT_L: About 7% or less errors can be corrected.ERROR_CORRECT_M (default): About 15% or less errors can be corrected.ROR_CORRECT_H: About 30% or less errors can be corrected.box_size: Controls the number of pixels contained in each small grid in the QR code.border: controls the number of grids contained in the border (the distance between the QR code and the image border) (the default is 4, which is the minimum value specified by the relevant standards)'''qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=5, border=4,)QRcode QR code to add logo
xxxxxxxxxx# If the logo address exists, add the logo imagemy_file = Path(logo_path)if my_file.is_file(): img = add_logo(img, logo_path)Note: When using Chinese, Chinese characters must be added
xxxxxxxxxxcd /home/pi/yahboomcar_ws/src/yahboomcar_visual/simple_qrcodepython3 QRcode_Create.py

Identification
xdef decodeDisplay(image, font_path):gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)# You need to convert the output Chinese characters into Unicode encoding format firstbarcodes = pyzbar.decode(gray)for barcode in barcodes:# Extract the position of the bounding box of the QR code(x, y, w, h) = barcode.rect# Draw the bounding box of the barcode in the imagecv.rectangle(image, (x, y), (x + w, y + h), (225, 0, 0), 5)encoding = 'UTF-8'# To draw it, you need to convert it into a string firstbarcodeData = barcode.data.decode(encoding)barcodeType = barcode.type# Draw the data and type on the imagepilimg = Image.fromarray(image)# Create a brushdraw = ImageDraw.Draw(pilimg)# Parameter 1: font file path, parameter 2: font sizefontStyle = ImageFont.truetype(font_path, size=12, encoding=encoding)# Parameter 1: print coordinates, parameter 2: text, parameter 3: font color, parameter 4: fontdraw.text((x, y - 25), str(barcode.data, encoding), fill=(255, 0, 0), font=fontStyle)# PIL image to cv2 imageimage = cv.cvtColor(np.array(pilimg), cv.COLOR_RGB2BGR)# Print barcode data and barcode type to the terminalprint("[INFO] Found {} barcode: {}".format(barcodeType, barcodeData))return imageEffect Demonstration
xxxxxxxxxxcd /home/pi/yahboomcar_ws/src/yahboomcar_visual/simple_qrcodepython3 QRcode_Parsing_CSI.py







