yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
NUWA-HP60C Depth Camera📖
1.ROS1-Depth camera usage course
  • 1. Environment Construction
  • 2. Camera recording video
2.ROS1-ROS+OpenCV application
  • 1.ROS+Opencv Basics
  • 2.Face recognition
  • 3.Harris corner detection
  • 4. Target Tracking Algorithm
  • 5. Contour moment
  • 6. Polygonal Outlines
  • 7. Discrete Fourier Transform Algorithm
  • 8. Edge Detection Algorithm
  • 9. Face Detection Algorithm
  • 10. Optical flow detection algorithm
  • 11. Contour Detection
  • 12. General contour detection
  • 13. Feature point tracking
  • 14.HLS Color Filtering
  • 15. Hough circle detection
  • 16. Hough Line Detection
  • 17.HSV color filtering
  • 18.LK optical flow algorithm
  • 19. Human Detection Algorithm
  • 20. Phase-correlated displacement detection
  • 21. Image pyramid sampling algorithm
  • 22.RGB color filtering
  • 23. Clear background detection algorithm
  • 24. Streamlining the optical flow algorithm
  • 25. Simple Filter
  • 26. Threshold Image Processing
  • 27. Watershed segmentation algorithm
3.ROS1-Mediapipe course
  • 1.Hand detection
  • 2.Posture detection
  • 3.Overall detection
  • 4.Face Mesh
  • 5.Face recognition
  • 6.Face effects
  • 7.Face Detection
  • 8.3D Object Recognition
  • 9.Paintbrush
  • 10.Finger control
  • 11.Gesture Recognition
4.ROS1-Depth camera application course
  • 1. Camera calibration
  • 2. QR code
  • 3. Human Pose Estimation
  • 4. Target detection
  • 5. Point cloud data viewing
  • 6. AR Vision
  • 7.AR QR code tracking
  • 8. Color Tracking
  • 9. Object Tracking
5.ROS1-Linux basic course
  • 1.Introduction to Linux system
  • 2.Ubuntu file system
  • 3.Ubuntu common commands
  • 4.Ubuntu common editors
  • 5.Ubuntu software operation commands
  • 6.Virtual machine installation
  • 7.SSH remote control
  • 8.VNC remote control
  • 9.Transfer files remotely
  • 10.Driver library and communication
  • 11.Static IP and hotspot mode
  • 12.Bind device ID
  • 13.Capacity expansion and resource allocation
  • 14.Update system software sources
  • 15.Set root user password
  • 16.sudo free password
  • 17.Connect to WiFi network
  • 18.View system version
  • 19.Customized service management
  • 20.Back up system image
6.ROS1-OpenCV course
  • 1.Opencv Source CV Introduction
  • 2.Image reading and display
  • 3.Picture writing
  • 4.Picture Quality
  • 5.Pixel Operation
  • 6.Picture scaling
  • 7.Picture cutting
  • 8.Picture translation
  • 9.Picture mirroring
  • 10.Affine transformation
  • 11.Picture rotation
  • 12.Perspective transformation
  • 13.Grayscale processing
  • 14.Image binarization
  • 15.Edge detection
  • 16.Line segment drawing
  • 17.Rectangle and circle drawing
  • 18.Text and picture drawing
7.ROS1 basic course
  • 1.ROS introduction
  • 2.ROS installation
  • 3.ROS common command tools
  • 4.ROS workspace
  • 5.ROS function package
  • 6.ROS node
  • 7.ROS topic publisher
  • 8.ROS topic subscribers
  • 9.ROS service client
  • 10.ROS service server
  • 11.ROS action client
  • 12.ROS action server
  • 13.ROS custom message reception
  • 14.ROS-launch file
  • 15.ROS-TF transformation
  • 16.ROS parameter service
  • 17.ROS-rviz use
  • 18.ROS-rqt tool usage
  • 19.Topic message recording and playback
  • 20.urdf model introduction
  • 21.gazebo introduction
  • 22.ROS distributed communication
8.ROS2-Depth Camera Application Course
  • 1. Use of Depth Camera
  • 2. Camera internal parameter calibration
  • 3. Color tracking
  • 4. KCF Object Tracking
  • 5. ORBSLAM2 Basics
  • 6. ORB_SLAM2 PCL Mapping
  • 7. ORB_SLAM2 Octomap Mapping
9.ROS2-OpenCV course
  • 1. ROS+OpenCV application
  • 2. QR code creation and recognition
  • 3. AR Vision
10.ROS2-Mediapipe course
  • 1.Hand detection
  • 2.Posture detection
  • 3.Overall detection
  • 4.Face Mess
  • 5.Face recognition
11.ROS2 basic course
  • 1.Introduction to ROS2
  • 2.ROS2 install Humble
  • 3.ROS2 development environment
  • 4.ROS2 workspace
  • 5.ROS2 function package
  • 6.ROS2 node
  • 7.ROS2 topic communication
  • 8.ROS2 service communication
  • 9.ROS2 action communication
  • 10.ROS2 custom interface message
  • 11.ROS2 parameter service case
  • 12.ROS2 meta-function package
  • 13.ROS2 distributed communication
  • 14.ROS2 DDS
  • 15.ROS2 time related API
  • 16.ROS2 common command tools
  • 17.ROS2 rviz2 use
  • 18.ROS2 rqt toolbox
  • 19.ROS2 Launch startup file configuration
  • 20.ROS2 recording and playback tool
  • 21.ROS2 URDF model
  • 22.ROS2 Gazebo simulation platform
  • 23.ROS2 TF2 coordinate transformation
5.Bracket installation video
  • Bracket installation video
Download
  • ROS1_VM
  • ROS2_VM
  • ROS1_Code
  • ROS2_Code
  • DataSheet
  • 3D_Model_File
  • Windows Software
  • ROS2_Basic_VM
Download ZIP

Welcome to NUWA-HP60C Depth Camera repository

2. QR code creation and recognition

  • 2. QR code creation and recognition

    2.1. QR QR code

    2.1.1. QR QR code introduction

    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.

    2.1.2. QR QR code structure

    image-20241120170910751

    2.1.3. QR QR code characteristics

    The data value in the QR code contains repeated information (redundant value). Therefore, even if up to 30% of the QR code structure is destroyed, it does not affect the readability of the QR code. The storage space of the 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.

    2.1.4, QR code creation and recognition

    1), create QR code
    • Source code path
    ~/ascam_ros2_ws/src/yahboomcar_visual/simple_qrcode/QRcode_Create.py
    • Installation package
    xxxxxxxxxx
    python3 -m pip install qrcode pyzbar
    sudo apt-get install libzbar-dev
    • Start
    xxxxxxxxxx
    cd ~/ascam_ros2_ws/src/yahboomcar_visual/simple_qrcode
    python QRcode_Create.py

    After the program runs, it will prompt you to enter the generated content, and press Enter to confirm the content. Here we take the creation of the "yahboom" string as an example,

    image-20230620154805683

    • Core source code analysis
    xxxxxxxxxx
    #Create qrcode object
    qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=5,
    border=4,)
    #Meaning of each parameter
    '''version: An integer with a value of 1 to 40, which 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 can be used.
    ERROR_CORRECT_L: About 7% or less errors can be corrected.
    ERROR_CORRECT_M (default): About 15% or less errors can be corrected.
    ERROR_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)'''
    #qrcode QR code adds logo
    my_file = Path(logo_path)
    if my_file.is_file(): img = add_logo(img, logo_path)
    #Add data
    qr.add_data(data)
    # Fill data
    # fill data
    qr.make(fit=True)
    # Generate images
    # generate images
    img = qr.make_image(fill_color="green", back_color="white")
  • 2) Identify QR code
    • Source code path
    xxxxxxxxxx
    ~/ascam_ros2_ws/src/yahboomcar_visual/yahboomcar_visual/QRcode_Parsing.py
    • Start
    xxxxxxxxxx
    #Camera startup
    ros2 launch ascamera hp60c.launch.py
    ros2 run yahboomcar_visual QRcode_Parsing

    image-20241114121856606

    • View node communication graph
    xxxxxxxxxx
    ros2 run rqt_graph rqt_graph

    image-20241114121936905

    • Core source code analysis
    xxxxxxxxxx
    self.sub_img = self.create_subscription(CamImage,'/ascamera_hp60c/camera_publisher/rgb0/image',self.handleTopic,100)
    frame = self.decodeDisplay(frame)
    def decodeDisplay(self,image):
        gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
        # 需要先把输出的中文字符转换成Unicode编码形式
        # The output Chinese characters need to be converted to Unicode encoding first
        barcodes = pyzbar.decode(gray)
        for barcode in barcodes:
            # 提取二维码的边界框的位置
            # Extract the position of the boundary box of the TWO-DIMENSIONAL code
            # 画出图像中条形码的边界框
            # Draw the bounding box for the bar code in the image
            (x, y, w, h) = barcode.rect
            cv.rectangle(image, (x, y), (x + w, y + h), (225, 0, 0), 5)
            encoding = 'UTF-8'
            # 画出来,就需要先将它转换成字符串
            # to draw it, you need to convert it to a string
            barcodeData = barcode.data.decode(encoding)
            barcodeType = barcode.type
            # 绘出图像上数据和类型
            # Draw the data and type on the image
            pilimg = Image.fromarray(image)
            # 创建画笔
            # create brush
            draw = ImageDraw.Draw(pilimg)  # 图片上打印  Print on picture
            # 参数1:字体文件路径,参数2:字体大小
            # parameter 1: font file path, parameter 2: font size
            fontStyle = ImageFont.truetype("/home/yahboom/ascam_ros2_ws/src/yahboomcar_visual/yahboomcar_visual/Block_Simplified.TTF", size=12, encoding=encoding)
            # # 参数1:打印坐标,参数2:文本,参数3:字体颜色,参数4:字体
            # Parameter 1: print coordinates, parameter 2: text, parameter 3: font color, parameter 4: font
            draw.text((x, y - 25), str(barcode.data, encoding), fill=(255, 0, 0), font=fontStyle)
            # # PIL图片转cv2 图片
            # PIL picture to CV2 picture
            image = np.array(pilimg)
            # 向终端打印条形码数据和条形码类型
            # Print barcode data and barcode type to terminal
            print("[INFO] Found {} barcode: {}".format(barcodeType, barcodeData))
            return image

     

ROS+OpenCV application
AR Vision

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/中文