Skip to the content.
English 한국어 日本語 Tiếng Việt

Ví dụ Crystal

https://github.com/bobhyun/TS-ANPR/tree/main/examples/Crystal/anpr

1. Sao chép các tệp Engine

[Lưu ý] Trong ví dụ này, tệp engine được giải nén vào thư mục examples/bin/ để chia sẻ với các ví dụ khác. Tuy nhiên, đối với triển khai thực tế, tệp engine thường được sao chép vào thư mục nơi tệp thực thi của ứng dụng được đặt.

2. Yêu cầu tiên quyết

  1. Cài đặt Crystal (khuyến nghị phiên bản 1.0.0 trở lên)

    Windows:

    # Sử dụng Scoop
    scoop install crystal
    
    # Hoặc tải xuống từ https://crystal-lang.org/install/on_windows/
    

    Linux:

    # Ubuntu/Debian
    curl -fsSL https://crystal-lang.org/install.sh | sudo bash
    
    # Hoặc sử dụng trình quản lý gói
    sudo apt-get install crystal
    
  2. Xác minh cài đặt

    crystal --version
    

3. Cách chạy

  1. Điều hướng đến thư mục ví dụ Crystal

    cd Crystal/anpr
    
  2. Cài đặt các phụ thuộc

    # Cài đặt các shard cần thiết (StumpyPNG và StumpyJPEG để giải mã hình ảnh)
    shards install
    

    Lưu ý Windows: Shards yêu cầu symbolic links. Nếu gặp lỗi symbolic link, bạn có hai tùy chọn:

    • Tùy chọn 1 (Khuyến nghị): Bật Developer Mode trong Windows Settings
      • Vào Settings → Privacy & Security → For developers → Developer Mode → ON
      • Xem: https://learn.microsoft.com/vi-vn/windows/apps/get-started/enable-your-device-for-development
    • Tùy chọn 2: Chạy PowerShell hoặc Command Prompt với quyền Administrator
      # Chạy với quyền Administrator
      shards install
      
  3. Chạy ví dụ

    Sử dụng Shards (khuyến nghị):

    # Build và chạy
    shards build
    ./bin/anpr
    
    # Build với tối ưu hóa
    shards build --release
    

    Biên dịch trực tiếp:

    # Chạy trực tiếp
    crystal run anpr.cr
    
    # Hoặc biên dịch và chạy
    crystal build anpr.cr
    ./anpr
    
    # Biên dịch với tối ưu hóa
    crystal build --release anpr.cr
    

4. Ghi chú

5. Tính năng

6. Phương pháp xử lý hình ảnh

Ví dụ này minh họa ba cách khác nhau để xử lý hình ảnh:

  1. read_image_file: Xử lý tệp trực tiếp bằng anpr_read_file (phương pháp nhanh nhất)
  2. read_encoded_image: Truyền byte hình ảnh được mã hóa với định dạng pixel “encoded”
  3. read_pixel_buffer: Giải mã hình ảnh thành dữ liệu pixel RGB thô bằng StumpyPNG/StumpyJPEG, sau đó truyền vào anpr_read_pixels
    • Tệp PNG: Giải mã bằng StumpyPNG
    • Tệp JPEG: Giải mã bằng StumpyJPEG, tự động chuyển sang định dạng encoded nếu giải mã thất bại

Để chuyển đổi giữa các phương pháp, sửa đổi biến anpr_func trong mã:

# Chọn một trong các tùy chọn sau:
anpr_func = ->read_image_file(TSANPR, String, String, String)
# anpr_func = ->read_encoded_image(TSANPR, String, String, String)
# anpr_func = ->read_pixel_buffer(TSANPR, String, String, String)

Lưu ý: Hàm read_pixel_buffer tự động xử lý lỗi giải mã JPEG bằng cách chuyển sang định dạng encoded, đảm bảo hoạt động ổn định trên nhiều biến thể JPEG khác nhau.

7. Tham khảo API

Lớp TSANPR

Lớp TSANPR cung cấp các phương thức sau:

Constructor:

Phương thức cốt lõi:

Tùy chọn nhận dạng

Định dạng đầu ra

7. Khắc phục sự cố

Vấn đề tải thư viện:

Vấn đề biên dịch:

Vấn đề cụ thể theo nền tảng: