yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
Rider Pi Robot📖
0.Quick Start
  • 0. Notes (Must Read)new
  • 1.APP control experience
  • 2.Web page image transmission controlnew
  • 3.Manual
1.RPi Basic course
  • 1.SSH remote login
  • 2.VNC remote login desktop
  • 3. Remote file transfer
  • 4. JupyterLab environment construction and use
  • 5. Write system image
  • 6. Connect to WiFi
  • 7. Close startup programs(MustRead)
  • 8. Raspberry Pi system expansion
2.Car basic control course
  • 1. Car screen display control
  • 2. Car recording audio
  • 3. Car plays audio
  • 4. Car recording video
  • 5. Car plays video
  • 6. RGB light control
  • 7. Car attitude angle reading
  • 8. Read the battery level of the car
3.Car motion control
  • 1. Car forward and backward
  • 2. Car rotation movement
  • 3. Adjust car height
  • 4. Adjust car posture
  • 5. Car self-stabilization mode
  • 6. Car squats and shakes
4.Open Source CV
A. Getting started with OpenCV
  • 1. Introduction to OpenCV
  • 2. OpenCV image reading and display
  • 3. OpenCV image writing
  • 4. OpenCV Image Quality
  • 5.OpenCV pixel operations
B. OpenCV geometric transformation
  • 1. Image scaling
  • 2. Image cutting
  • 3. Image translation
  • 4. Image mirroring
  • 5. Affine Transformation
  • 6. Image Rotation
  • 7. Perspective Transformation
C. OpenCV image processing and drawing text segments
  • 1. Grayscale processing
  • 2. Image Binarization
  • 3. Edge Detection
  • 4. Line drawing
  • 5. Rectangle and circle drawing
  • 6. Text and picture drawing
D. Image beautification
  • 1. Color Image Histogram
  • 2. Histogram Equalization
  • 3. Image repair
  • 4. Brightness enhancement
  • 5. Skin whitening
  • 6. Gaussian mean filtering
  • 7. Median Filter
5.AI Visual recognition course
  • 1. Camera driver tutorial
  • 2. Color recognition
  • 3. HSV value test
  • 4. Object Recognition
  • 5. QR code recognition
  • 6. Human face mask
  • 7. License Plate Recognition
  • 8. Human Pose Estimation
  • 9. Object Detection
  • 10.Yolo detection
  • 11. Face Detection
  • 12. Face effects
  • 13. 3D Object Recognition
  • 14. Paintbrush
  • 15. Finger recognition
  • 16. Gesture Recognition
  • 17.Facial Recognitionnew
  • 18.Emotion Recognitionnew
  • 19.Motion Detectionnew
6.AI Visual interaction course
  • 1. Color tracking
  • 2. Color follows
  • 3. QR code recognition action
  • 4. Face tracking
  • 5. Finger control
  • 6. Gesture following
  • 7. Gesture control car
  • 8. Human Body Followingnew
7. AI Large Model Interaction
  • 0.Principles of Large AI Models
  • 1.Large model premise use configuration
  • 2.Q&A(For cm5)
  • 3.Q&A and ChatGPT(For cm4)
  • 4.Speech recognition
  • 5.Picture to Text
  • 6.Embodied intelligence
Download
  • APP(iOS/Android)
  • System_File
  • Code
  • Hareware_Info
  • AI_Model_File
  • 3D_Model_File
  • Instruction_Manual
Download ZIP

Welcome to Rider Pi Robot repository

17.Facial Recognition

Face Recognition

Face Recognition1. Experiment Objective2. Experiment Steps3. Experimental Phenomena4. Experimental Source Code Analysis

This tutorial is specific to CM5 version; it cannot be used directly in CM4 version.

1. Experiment Objective

To learn how RiderPI can recognize faces after collecting facial image data.

2. Experiment Steps

  1. Enter the RiderPI system, terminate the RiderPI main program, and enter "ip (where ip is RiderPI's IP):8888" in your browser. After logging in, enter the password "yahboom".

image-2024112100001

  1. Then log in and navigate to the path cd /home/pi/Rider-pi_class/5.AI Visual Recognition Course/17. Face Recognition/ and run face_recognition_Class.ipynb.
  2. Running the Program

3. Experimental Phenomena

  1. The screen will display a real-time image. At this time, press the button in the upper right corner of the screen to capture and record the face.
  2. Each time a face is captured, the screen will display "ok," but this is not sufficient evidence for subsequent recognition.

image-2024112100002

  1. Press the button in the upper left corner of the screen to perform face recognition. The program will print two results: 1. Successful capture, indicating face recognition can be performed. 2. Capture failed, indicating face recognition cannot be performed and needs to be re-captured.
  2. After recognizing a face, the screen will display the sequence number of the captured image.

Acquired:

image-2024112100003

Unacquired:

image-2024112100004

  1. This program will not save previously registered faces upon restarting; you need to re-register for recognition.

4. Experimental Source Code Analysis

def take_photo():
    global i 
    show_ok = False  # 控制是否显示OK字样 Control whether the word 'OK' is displayed
    ok_display_time = 0  # 记录显示OK的时间 Record the time when OK is displayed
    
    while True:
        frame = picam2.capture_array()
       
        #cv2.imshow('frame', frame)
        image_widget.value = bgr8_to_jpeg(frame)
        
        b, g, r = cv2.split(frame)
        img = cv2.merge((r, g, b))
        imgok = Image.fromarray(img)
        mydisplay.ShowImage(imgok) 
        
        if button.press_d():
            cv2.imwrite(f"./Face_P/{i}.jpg", frame)
            
while (1):
    frame = picam2.capture_array()
    face_locations = face_recognition.face_locations(frame)
    face_encodings = face_recognition.face_encodings(frame, face_locations)
    # 在这个视频帧中循环遍历每个人脸 Loop through each face in this video frame
    for (top, right, bottom, left), face_encoding in zip(
            face_locations, face_encodings):
        # 看看面部是否与已知人脸相匹配。 Check if the face matches a known face.
        for i, v in enumerate(total_face_encoding):
            match = face_recognition.compare_faces(
                [v], face_encoding, tolerance=0.5)
            name = "Unknown"
            if match[0]:
                total_image_name[i] = total_image_name[i].replace(folder_path,"")
                name = total_image_name[i] #str(i+1) 
                name = 'NO.' + name
                break
        # 画出一个框,框住脸 Draw a frame to enclose the face
        cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
        # 画出一个带名字的标签,放在框下 Draw a label with a name and place it under the box
        cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255),
                      cv2.FILLED)
        font = cv2.FONT_HERSHEY_DUPLEX
        try:
            cv2.putText(frame, name, (left + 6, bottom - 6), font, 0.7,
                    (255, 255, 255), 1)
        except :
            name = "Unknown"
            cv2.putText(frame, name, (left + 6, bottom - 6), font, 0.7,
                    (255, 255, 255), 1)
    # 显示结果图像 Display result image
    image_widget.value = bgr8_to_jpeg(frame)

take_photo(): The main business of this function is to collect faces

while (1): This loop performs recognition based on the collected faces. The recognized faces will display their serial numbers on the screen, while those not recognized will display "Unknown".

Gesture Recognition
Emotion Recognition

COMPANY

  • About us
  • Team Style
  • Blog

LEARNING & EXPLORATION

  • Tutorials
  • Edge AI hardware
  • Educational robots
  • Embedded intelligent hardware

WHERE TO BUY

  • Yahboom Online Store
  • Amazon
  • Alibaba
  • AliExpress
  • Mercado

TECHNOLOGY SUPPORT

  • Email: support@yahboom.com

BE A DISTRIBUTOR

  • Email: sales@yahboom.com
QR Code

Copyright © 2017-2026 Yahboom. All Rights Reserved.

EN/中文