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

Hướng dẫn phát triển ứng dụng

Mục lục

1. Entry Points

Tất cả các nguyên mẫu hàm đều như sau:

#ifdef WIN32
#define TS_ANPR_ENTRY extern "C" __declspec(dllexport) const char* WINAPI
#else
#define TS_ANPR_ENTRY extern "C" const char*
#endif

Để tránh dài dòng, các phần sau đây sẽ được ký hiệu là TS_ANPR_ENTRY.

1.1. anpr_initialize

Khởi tạo thư viện. Để sử dụng thư viện, hàm này phải được gọi một lần trước tất cả các hàm khác.

TS_ANPR_ENTRY anpr_initialize(const char* mode); // [IN] Thiết lập chế độ hoạt động của thư viện

Tham số:

Giá trị trả về:

1.2. anpr_read_file

Nhận dạng biển số xe từ tệp hình ảnh.

TS_ANPR_ENTRY anpr_read_file(
  const char* imgFileName,  // [IN] Tên tệp hình ảnh đầu vào
  const char* outputFormat, // [IN] Định dạng dữ liệu đầu ra
  const char* options);     // [IN] Tùy chọn chức năng

Tham số:

Giá trị trả về:

Lưu ý:

1.3. anpr_read_pixels

Nhận diện biển số xe từ bộ nhớ đệm (buffer) hình ảnh đã tải vào. Từ phiên bản TS-ANPR v2.3.0, hỗ trợ cả hình ảnh đã được mã hóa.

TS_ANPR_ENTRY anpr_read_pixels(
  const unsigned char* pixels,  // [IN] Địa chỉ bắt đầu của pixel hình ảnh
  const unsigned long width,    // [IN] Số pixel chiều rộng của hình ảnh
  const unsigned long height,   // [IN] Số pixel chiều cao của hình ảnh
  const long stride,            // [IN] Số byte trên một dòng hình ảnh
  const char* pixelFormat,      // [IN] Định dạng pixel của hình ảnh
  const char* outputFormat,     // [IN] Định dạng dữ liệu đầu ra
  const char* options);         // [IN] Tùy chọn chức năng

Tham số:

Giá trị trả về: (giống như anpr_read_file) Lưu ý: (giống như anpr_read_file)

  # Ví dụ Python

  # Nhập khung hình video
  ret, frame = capture.read()
  height = frame.shape[0]
  width = frame.shape[1]
  result = anpr_read_pixels(bytes(frame), width, height, 0, b'BGR', b'json', b'vms')
  if len(result) > 0:
      print(result.decode('utf8'))

  # Nhập hình ảnh từ trang web
  response = requests.get('https://example.com/image.jpg')
  if response.status_code == 200:
      result = anpr_read_pixels(response.content, 0, 0, 0, b'encoded', b'json', b'vms')
      if len(result) > 0:
          print(result.decode('utf8'))

2. Tùy chọn nhận diện

2.1. Danh sách tùy chọn hỗ trợ theo loại giấy phép

Ký tự Ý nghĩa Giấy phép áp dụng
v Xác định biển số đã gắn trên xe hay chưa Tất cả
b Nhận diện một trong các biển số đã gắn trên xe Tất cả
m Nhận diện tất cả biển số xe của nhiều xe (nhận diện đa biển số) Nhận diện đối tượng, Pro, Server
s Nhận diện biển số ở mọi góc độ 360° của xe (nhận diện surround) Nhận diện đối tượng, Pro, Server
d Nhận diện đối tượng (phân biệt xe tải/trống) Tất cả
r Nhận diện biển số của đối tượng (xe) đã nhận diện Tất cả
i Thiết lập vùng quan tâm (RoI) Tất cả
x Thiết lập vùng không quan tâm (RoU) Tất cả
a Thiết lập kích thước tối thiểu của biển số xe Tất cả

2.2. Hướng dẫn lựa chọn tùy chọn

rên sơ đồ luồng bên dưới, khi di chuyển từ Bắt đầu đến Hoàn tất lựa chọn, hãy gom các ký tự trong các vòng tròn màu xanh lá mà bạn đã đi qua để sử dụng làm giá trị tùy chọn. (Thứ tự các ký tự không quan trọng.) Ví dụ: Nếu đường đi là Bắt đầuvsmHoàn tất lựa chọn, giá trị tùy chọn sẽ là "vsm".

flowchart TD

  start[/Bắt đầu/]-->attach
  attach-->|Không quan trọng|multi
  attach-->|Chỉ biển số đã gắn trên xe|v((v)):::opt

  v-->angle
  angle-->|Chỉ xe đứng thẳng|multi
  angle-->|Mọi góc độ 360°|s((s)):::opt
  s-->multi
  multi-->|Có|m((m)):::opt
  multi-->|Không|done[/Hoàn tất lựa chọn/]
  m-->done

  start-->d((d)):::opt
  d-->angle2
  angle2-->|Chỉ xe đứng thẳng|multi2
  angle2-->|Mọi góc độ 360°|s2((s)):::opt
  s2-->multi2
  multi2-->|Có|m2((m)):::opt
  multi2-->|Không|read
  m2-->read

  read-->|Có|r((r)):::opt
  read-->|Không|done
  r-->done


  subgraph "Nhận diện biển số"
    attach
    v
    angle
    multi
    m
    s
  end

  subgraph "Nhận diện đối tượng"
    read
    angle2
    multi2
    s2
    m2
    d
    r
  end

  classDef opt fill:#6F6,stroke:#CCC,stroke-width:4px,padding:10px,font-weight:bold

2.3. Thiết lập vùng quan tâm (RoI) / Vùng không quan tâm (RoU)

Vùng quan tâm(RoI)

Vùng không quan tâm(RoU)

[Lưu ý] Nếu không chỉ định vùng quan tâm hoặc vùng không quan tâm, hệ thống sẽ nhận diện biển số trên toàn bộ hình ảnh. Nếu chỉ định cả vùng quan tâm và vùng không quan tâm, các khu vực bị chồng lấp sẽ ưu tiên vùng không quan tâm. Do đó, tất cả biển số xe nằm trong vùng chồng lấp sẽ bị bỏ qua.

# Ví dụ Python
# Khi tọa độ pixel của từng đỉnh đa giác cho mỗi vùng trên ảnh như sau:
# RoI = [(810,64), (939,1182), (1486,1182), (1149,571), (879,124), (839,64)]
# RoI2 = [(771,67), (479,1182), (1793,1182), (801,67)]
# RoU = [(851,70), (923,134), (1753,1182), (1789,1182), (1789,250), (1176,87), (946,68)]

# Thiết lập một vùng quan tâm (RoI)
result = anpr_read_file(
  b'roi.jpg',    # Tên tệp đầu vào
  b'text',       # Định dạng đầu ra
  b'vi810,64,939,1182,1486,1182,1149,571,879,124,839,64') # Sử dụng tùy chọn 'v' để chỉ nhận diện biển số gắn trên xe

# Thiết lập hai vùng quan tâm (RoI)
result = anpr_read_file(
  b'roi.jpg',    # Tên tệp đầu vào
  b'text',       # Định dạng đầu ra
  b'vi810,64,939,1182,1486,1182,1149,571,879,124,839,64i771,67,479,1182,1793,1182,801,67')

# Thiết lập một vùng quan tâm và một vùng không quan tâm (RoU)
result = anpr_read_file(
  b'roi.jpg',    # Tên tệp đầu vào
  b'text',       # Định dạng đầu ra
  b'vi810,64,939,1182,1486,1182,1149,571,879,124,839,64x851,70,923,134,1753,1182,1789,1182,1789,250,1176,87,946,68')

# Thiết lập một vùng không quan tâm (RoU)
result = anpr_read_file(
  b'roi.jpg',    # Tên tệp đầu vào
  b'text',       # Định dạng đầu ra
  b'vx851,70,923,134,1753,1182,1789,1182,1789,250,1176,87,946,68')

2.4. Thiết lập kích thước tối thiểu của biển số

3. Định dạng dữ liệu xuất ra

Dữ liệu đầu ra được chia thành hai định dạng:

3.1. Kết quả nhận diện biển số xe

3.1.1. text

Chỉ xuất ra văn bản biển số xe. Nếu có nhiều biển số, các biển số sẽ được phân tách bằng ký tự xuống dòng CR (0x0d).

29A02240
43HC00041

Nếu không nhận diện được biển số nào, sẽ xuất ra chuỗi rỗng kết thúc bằng ký tự NULL (NULL terminated string (0x00)).

Nếu có lỗi, sẽ xuất ra thông báo lỗi theo định dạng văn bản như dưới đây:

error: (1) Invalid parameters
3.1.2. csv

Xuất biển số xe và các thuộc tính dưới dạng csv. Mỗi dòng tương ứng với một biển số xe được nhận diện, các cột được phân tách bằng dấu phẩy (,).

29A02240,1217,2083,92,175,12.45,0.75,0.83,0.20,ev
43HC00041,1108,1317,67,217,12.45,0.76,0.89,0.10,

Ý nghĩa của từng cột như sau: | Cột | Ý nghĩa | Ghi chú |—–:|—————————|———————— | 1 | Biển số xe | text | 2 | Tọa độ x góc trên bên trái biển số | area.x | 3 | Tọa độ y góc trên bên trái biển số | area.y | 4 | Chiều rộng biển số | area.width | 5 | Chiều cao biển số | area.height | 6 | Góc của biển số | area.angle | 7 | Độ tin cậy nhận diện ký tự | conf.ocr | 8 | Độ tin cậy nhận diện biển số | conf.plate | 9 | Thời gian nhận diện ký tự (giây) | elapsed | 10(1) | Có phải xe điện thân thiện môi trường | attr.ev

Nếu không nhận diện được biển số nào, sẽ xuất ra chuỗi rỗng kết thúc bằng ký tự NULL (NULL terminated string (0x00)).

Nếu có lỗi, sẽ xuất ra thông báo lỗi theo định dạng sau:

error,1,Invalid parameters

3.1.3. json

Xuất biển số xe và các thuộc tính dưới dạng json.

[
  {
    // Biển số đầu tiên
    text: "29A02240", // Biển số xe
    area: {
      // Vùng biển số (đơn vị pixel)
      x: 1217, // Tọa độ x góc trên bên trái
      y: 2083, // Tọa độ y góc trên bên trái
      width: 92, // Chiều rộng
      height: 175, // Chiều cao
      angle: 12.45, // Góc nghiêng (độ)
    },
    attrs: {
      // Thuộc tính biển số
      ev: true, // Có phải xe điện thân thiện môi trường không
    },
    ev: true, // đã ngưng dùng (đã chuyển sang attrs.ev, sẽ bị xóa ở phiên bản sau)
    conf: {
      // Độ tin cậy (giá trị từ 0 đến 1)
      ocr: 0.75, // Độ tin cậy nhận diện ký tự
      plate: 0.84, // Độ tin cậy nhận diện biển số
    },
    elapsed: 0.27, // Thời gian xử lý (đơn vị giây)
  },
  {
    // Biển số thứ hai
    text: "43HC00041",
    area: {
      x: 1108,
      y: 1317,
      width: 67,
      height: 217,
      angle: 12.45,
    },
    attrs: {
      ev: false,
    },
    ev: false,
    conf: {
      ocr: 0.76,
      plate: 0.89,
    },
    elapsed: 0.14,
  },
];

Nếu không nhận diện được biển số nào, sẽ xuất dữ liệu rỗng như sau:

[];

Nếu có lỗi, sẽ xuất ra dưới dạng json như sau:

{
  "error": {
    "code": 1,
    "message": "Invalid parameters"
  }
}

3.1.4. yaml

Xuất biển số xe và các thuộc tính dưới dạng yaml.

- text: 29A02240 # Biển số đầu tiên, biển số xe
  area: # Vùng biển số (đơn vị pixel)
    x: 1217 # Tọa độ x góc trên bên trái
    y: 2083 # Tọa độ y góc trên bên trái
    width: 92 # Chiều rộng
    height: 175 # Chiều cao
    angle: 12.45 # Góc nghiêng (độ)
  conf: # Độ tin cậy (giá trị từ 0 ~ 1)
    ocr: 0.75 # Độ tin cậy nhận diện ký tự
    plate: 0.83 # Độ tin cậy nhận diện biển số
  attrs: # Thuộc tính biển số
    ev: true # Có phải xe điện thân thiện môi trường không
  ev: true # đã ngưng dùng (đã chuyển sang attrs.ev, sẽ bị xóa ở phiên bản sau)
  elapsed: 0.20 # Thời gian xử lý (giây)
- text: 43HC00041 # Biển số thứ hai
  area:
    x: 1108
    y: 1317
    width: 67
    height: 217
    angle: 12.45
  conf:
    ocr: 0.76
    plate: 0.89
  ev: false
  elapsed: 0.10

Nếu không nhận diện được biển số nào, sẽ xuất dữ liệu rỗng như sau:


Nếu có lỗi, sẽ xuất ra dưới dạng yaml như sau:

error
  code: 1
  message: Invalid parameters

3.1.5. xml

Xuất biển số xe và các thuộc tính dưới dạng xml.

<?xml version="1.0" encoding="utf-8"?>
<data>
  <!-- Biển số đầu tiên
    text: Biển số xe
    ev: đã ngưng dùng (đã chuyển sang attrs.ev, sẽ bị xóa ở phiên bản sau)
    elapsed: Thời gian xử lý (giây)
  -->
  <license-plate text="29A02240" ev="true" elapsed="0.20">
    <!-- Thuộc tính biển số
      ev: Có phải xe điện thân thiện môi trường không
    -->
    <attrs ev="true"/>
    <!-- Vùng biển số (đơn vị pixel)
      x: Tọa độ x góc trên bên trái
      y: Tọa độ y góc trên bên trái
      width: Chiều rộng
      height: Chiều cao
      angle: Góc nghiêng (độ)
    -->
    <area x="1217" y="2083" width="92" height="175" angle="12.45"/>
    <!-- Độ tin cậy (giá trị từ 0 ~ 1)
      ocr: Độ tin cậy nhận diện ký tự
      plate: Độ tin cậy nhận diện biển số
    -->
    <conf ocr="0.75" plate="0.83"/>
  </license-plate>
  <!-- Biển số thứ hai -->
  <license-plate text="43HC00041" ev="false" elapsed="0.11">
    <attrs ev="false"/>
    <area x="1108" y="1317" width="67" height="217"/>
    <conf ocr="0.76" plate="0.89"/>
  </license-plate>
</data>

Nếu không nhận diện được biển số nào, sẽ xuất dữ liệu rỗng như sau:

<?xml version="1.0" encoding="utf-8"?>
<data />

Nếu có lỗi, sẽ xuất ra dưới dạng xml như sau:

<?xml version="1.0" encoding="utf-8"?>
<error code="1" message="Invalid parameters" />

3.2. Kết quả nhận diện đối tượng

Tìm kiếm các đối tượng đã được huấn luyện trước trong hình ảnh. Điểm nổi bật là có thể nhận diện các đối tượng bị biến dạng trong ảnh gốc chụp bằng camera mắt cá 360°. Hiện tại, các đối tượng được hỗ trợ như sau: | class | Tên tiếng Việt
|————–|———————————- | car | Xe ô tô | motorcycle | Xe máy

3.2.1. csv, text

Kết quả nhận diện đối tượng được xuất dưới dạng văn bản cvs. Ngay cả khi chọn định dạng đầu ra là text, kết quả cũng sẽ được xuất dưới dạng csv.

Mỗi dòng tương ứng với một đối tượng được nhận diện, các cột được phân tách bằng dấu phẩy (,).

car,2171,2281,396,521,0.9679,0.2886,72TD00310,2420,2295,110,81,147.5933,0.9005,0.7864,0.3913,ev
car,264,2266,433,543,0.9706,0.2886,59UA02181,315,2281,103,81,211.3135,0.9160,0.8299,0.4189,
car,777,0,579,403,0.9716,0.2886 // Trường hợp không có thông tin biển số

Ý nghĩa của từng cột như sau: | Cột | Ý nghĩa | Ghi chú |—–:|———————————–|———————— | 1 | Loại đối tượng | class | 2 | Tọa độ x góc trên bên trái đối tượng | area.x | 3 | Tọa độ y góc trên bên trái đối tượng | area.y | 4 | Chiều rộng | area.width | 5 | Chiều cao | area.height | 6 | Độ tin cậy | conf | 7 | Thời gian xử lý (giây) | elapsed | 8(1) | Biển số xe | licensePlate.text | 9 | Tọa độ x góc trên bên trái | licensePlate.area.x | 10 | Tọa độ y góc trên bên trái | licensePlate.area.y | 11 | Chiều rộng biển số | licensePlate.area.width | 12 | Chiều cao biển số | licensePlate.area.height | 13 | Góc của biển số | licensePlate.area.angle | 14 | Độ tin cậy nhận diện ký tự | licensePlate.conf.ocr | 15 | Độ tin cậy nhận diện biển số | licensePlate.conf.plate | 16 | Thời gian nhận diện ký tự (giây) | licensePlate.elapsed | 17(2) | Có phải xe điện thân thiện môi trường | licensePlate.attrs.ev

Nếu không nhận diện được đối tượng nào, sẽ xuất ra chuỗi rỗng kết thúc bằng ký tự NULL (NULL terminated string (0x00)).

Nếu có lỗi, sẽ xuất ra thông báo lỗi theo định dạng sau:

error,1,Invalid parameters
3.2.2. json

Kết quả nhận diện đối tượng được xuất dưới dạng json.

 [
  {                           // Đối tượng đầu tiên
    "class": "car",           // Loại đối tượng
    "area": {                 // Vùng đối tượng (đơn vị pixel)
      "x": 2171,              // Tọa độ x góc trên bên trái
      "y": 2281,              // Tọa độ y góc trên bên trái
      "width": 396,           // Chiều rộng
      "height": 521           // Chiều cao
    },
    "conf": 0.9679,           // Độ tin cậy nhận diện đối tượng (giá trị từ 0 ~ 1)
    "elapsed": 0.2513,        // Thời gian xử lý (giây)
    "licensePlate": [         // Biển số xe
      {
        "text": "72TD00310"    // Biển số xe
        "area": {             // Vùng biển số (đơn vị pixel)
          "x": 2420,          // Tọa độ x góc trên bên trái
          "y": 2295           // Tọa độ y góc trên bên trái
          "width": 110,       // Chiều rộng
          "height": 81,       // Chiều cao
          "angle": 147.5933   // Góc nghiêng (độ)
        },
        "attrs": {            // Thuộc tính biển số
          "ev": true          // Có phải xe điện thân thiện môi trường không
        },
        "conf": {             // Độ tin cậy (giá trị từ 0 ~ 1)
          "ocr": 0.9005,      // Độ tin cậy nhận diện ký tự
          "plate": 0.7864     // Độ tin cậy nhận diện biển số
        },
        "elapsed": 0.3525,    // Thời gian xử lý (giây)
      }
    ]
  },
  {                           // Đối tượng thứ hai
    "class": "car",
    "area": {
      "x": 264,
      "y": 2266,
      "width": 433,
      "height": 543
    },
    "conf": 0.9706,
    "elapsed": 0.2513,
    "licensePlate": [
      {
        "text": "59UA02181"
        "area": {
          "x": 315,
          "y": 2281,
          "width": 103,
          "height": 81,
          "angle": 211.3135
        },
        "attrs": {
          "ev": false
        },
        "conf": {
          "ocr": 0.916,
          "plate": 0.8299
        },
        "elapsed": 0.4402
      }
    ]
  },
  {                           // Đối tượng thứ ba (không có thông tin biển số)
    "class": "car",
    "area": {
      "x": 777,
      "y": 0
      "height": 403,
      "width": 579,
    },
    "conf": 0.9716,
    "elapsed": 0.2513
  }
]

Nếu không nhận diện được đối tượng nào, sẽ xuất dữ liệu rỗng như sau:

[];

Nếu có lỗi, sẽ xuất ra dưới dạng json như sau:

{
  "error": {
    "code": 1,
    "message": "Invalid parameters"
  }
}
3.2.3. yaml

Kết quả nhận diện đối tượng được xuất dưới dạng yaml.

- class: car # Đối tượng đầu tiên, loại đối tượng
  area: # Vùng đối tượng (đơn vị pixel)
    x: 2171 # Tọa độ x góc trên bên trái
    y: 2281 # Tọa độ y góc trên bên trái
    width: 396 # Chiều rộng
    height: 521 # Chiều cao
  conf: 0.9678 # Độ tin cậy nhận diện đối tượng (giá trị từ 0 ~ 1)
  elapsed: 0.3190 # Thời gian xử lý (giây)
  licensePlate: # Biển số xe
    - text: 72TD00310 # Biển số xe
      area: # ùng biển số (đơn vị pixel)
        x: 2420 # Tọa độ x góc trên bên trái
        y: 2295 # Tọa độ y góc trên bên trái
        width: 110 # Chiều rộng
        height: 81 # Chiều cao
        angle: 147.5933 # Góc nghiêng (độ)
      attrs: # Thuộc tính biển số
        ev: true # Có phải xe điện thân thiện môi trường không
      conf: # Độ tin cậy (giá trị từ 0 ~ 1)
        ocr: 0.9005 # Độ tin cậy nhận diện ký tự
        plate: 0.7864 # Độ tin cậy nhận diện biển số
      elapsed: 0.3226 # Thời gian xử lý (giây)
- class: car # Đối tượng thứ hai
  area:
    x: 264
    y: 2266
    width: 433
    height: 543
  conf: 0.9706
  elapsed: 0.3191
  licensePlate:
    - text: 59UA02181
      area:
        x: 315
        y: 2281
        width: 103
        height: 81
        angle: 211.3135
      conf:
        ocr: 0.916
        plate: 0.8299
      attrs:
        ev: false
      elapsed: 0.5527
- class: car # Đối tượng thứ ba (không có thông tin biển số)
  area:
    x: 777
    y: 0
    width: 579
    height: 403
  conf: 0.9716
  elapsed: 0.3191

Nếu không nhận diện được đối tượng nào, sẽ xuất dữ liệu rỗng như sau:


Nếu có lỗi, sẽ xuất ra dưới dạng yaml như sau:

error
  code: 1
  message: Invalid parameters
3.2.4. xml

Kết quả nhận diện đối tượng được xuất dưới dạng xml.

<?xml version="1.0" encoding="utf-8"?>
<data>
  <!-- Đối tượng đầu tiên
    class: Loại đối tượng
    conf: Độ tin cậy nhận diện đối tượng (giá trị từ 0 ~ 1)
    elapsed: Thời gian xử lý (giây)
  -->
  <object class="car" conf="0.9679" elapsed="0.3287">
    <!-- Vùng đối tượng (đơn vị pixel)
      x: Tọa độ x góc trên bên trái
      y: Tọa độ y góc trên bên trái
      width: Chiều rộng
      height: Chiều cao
    -->
    <area x="2171" y="2281" width="396" height="521"/>

    <!-- Biển số xe
      text: Biển số xe
      elapsed: Thời gian xử lý (giây)
    -->
    <license-plate text="72TD00310" elapsed="0.3961">

      <!-- Thuộc tính biển số
        ev: Có phải xe điện thân thiện môi trường không
      -->
      <attrs ev="true"/>

      <!-- Vùng biển số (đơn vị pixel)
        x: Tọa độ x góc trên bên trái
        y: Tọa độ y góc trên bên trái
        width: Chiều rộng
        height: Chiều cao
        angle: Góc nghiêng (độ)
      -->
      <area x="2420" y="2295" width="110" height="81" angle="147.5933"/>

      <!-- Độ tin cậy (giá trị từ 0 ~ 1)
        ocr: Độ tin cậy nhận diện ký tự
        plate: Độ tin cậy nhận diện biển số
      -->
      <conf ocr="0.9005" plate="0.7864"/>
    </license-plate>
  </object>

  <!-- Đối tượng thứ hai -->
  <object class="car" conf="0.9706" elapsed="0.3287">
    <area x="264" y="2266" width="433" height="543"/>
    <license-plate text="59UA02181" elapsed="0.4364">
      <attrs ev="false"/>
      <area x="315" y="2281" width="103" height="81" angle="211.3135"/>
      <conf ocr="0.9160" plate="0.8299"/>
    </license-plate>
  </object>

  <!-- Đối tượng thứ ba (không có thông tin biển số) -->
  <object class="car" conf="0.9716" elapsed="0.3287">
    <area x="777" y="0" width="579" height="403"/>
  </object>
</data>

Nếu không nhận diện được đối tượng nào, sẽ xuất dữ liệu rỗng như sau:

<?xml version="1.0" encoding="utf-8"?>
<data />

Nếu có lỗi, sẽ xuất ra dưới dạng xml như sau:

<?xml version="1.0" encoding="utf-8"?>
<error code="1" message="Invalid parameters" />

4. Bảng mã lỗi

Toàn bộ danh sách lỗi được thể hiện trong bảng dưới đây.

code message Giải thích
1 Invalid parameters Trường hợp tham số gọi hàm không hợp lệ
2 File not found Trường hợp không tìm thấy tệp hình ảnh đầu vào
3 Invalid image Trường hợp bộ nhớ hình ảnh đầu vào không đúng định dạng
4 Unsupported image format Trường hợp hình ảnh đầu vào có định dạng không được hỗ trợ
100 License expired Trường hợp giấy phép (license) đã hết hạn
101 Corrupted library Trường hợp một số tệp cấu hình thư viện bị thiếu hoặc bị hỏng
102 Not initialized Trạng thái chưa khởi tạo engine
103 Too many workers Số luồng gọi thư viện vượt quá giới hạn (tối đa 256)
104 Resource exhausted Trường hợp không thể cấp phát thêm tài nguyên
105 License not installed Trạng thái chưa cài đặt giấy phép (xảy ra khi chưa cài đặt license dùng thử miễn phí trên Linux)
106 USB dongle I/O error Xảy ra khi không đọc được USB dongle chứa license
107 License required Không có license để sử dụng chức năng này
108 Unsupported platform Xảy ra khi chạy trên môi trường không được hỗ trợ
200 Unknown Các lỗi khác chưa được định nghĩa