Welcome to Rider Pi Robot repository
3. QR code recognition action
QR code recognition action
1. Experimental purpose
Drive the car to recognize the QR code and perform corresponding actions according to the information in the QR code.
2. Experimental path source code
Enter the car system and end the car program Then enter the terminal
/home/pi/Rider-pi_class/6.AI Visual Interaction Course/3. QR code recognition/python3 qrcode_sport.py3. Experimental phenomenon
After running the source code, you can see that the car can recognize the information of the QR code and display the result of the QR code. The car will also perform corresponding actions according to the QR code

QR codes that can be recognized in this tutorial
4. Main source code analysis
ximport pyzbar.pyzbar as pyzbardef cv2AddChineseText(img, text, position, textColor=(0, 255, 0), textSize=30): if (isinstance(img, np.ndarray)): img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) draw = ImageDraw.Draw(img) fontStyle = ImageFont.truetype( "/home/pi/model/msyh.ttc", textSize, encoding="utf-8") draw.text(position, text, textColor, font=fontStyle) return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR) font = cv2.FONT_HERSHEY_SIMPLEX cap=cv2.VideoCapture(0)cap.set(3,320)cap.set(4,240)if(not cap.isOpened()): print("[camera.py:cam]:can't open this camera")while(True): barcodeData = "" ret, img = cap.read() img_ROI_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) barcodes = pyzbar.decode(img_ROI_gray) for barcode in barcodes: barcodeData = barcode.data.decode("utf-8") barcodeType = barcode.type text = "{} ({})".format(barcodeData, barcodeType) img=cv2AddChineseText(img,text, (10, 30),(0, 255, 0), 30) print("[INFO] Found {} barcode: {}".format(barcodeType, barcodeData)) b,g,r = cv2.split(img) img = cv2.merge((r,g,b)) imgok = Image.fromarray(img) display.ShowImage(imgok) r,g,b = cv2.split(img) img1 = cv2.merge((b,g,r)) cv2.imshow("image1",img1) if(barcodeData == "goahead"): g_car.rider_move_x(0.5,0.2) #前进0.2s elif(barcodeData == "goback"): g_car.rider_move_x(-0.5,0.2) #后退0.2s elif(barcodeData == "turnright"): g_car.rider_turn(-200,0.2) #右转0.2s elif(barcodeData == "turnleft"): g_car.rider_turn(200,0.2) #左转0.2s elif(barcodeData == "updown"): g_car.rider_periodic_z(2) time.sleep(2.5)#蹲起2.5s g_car.rider_periodic_z(0) elif(barcodeData == "shake"): g_car.rider_periodic_roll(2) #左右晃动2.5s time.sleep(2.5) g_car.rider_periodic_roll(0)### If you want to add more QR code recognition information### You can add it here, using the elif statement. ### 如果想要添加更多的二维码识别信息 ### 可以添加在这,使用elif语句即可。 if (cv2.waitKey(1)) == ord('q'): break if button.press_b(): breakcap.release()Through the source code, we can see that the car uses the camera to identify, displays the identified QR code results on the car's screen and the computer's screen, and lets the car run the actions corresponding to the code.