2009-08-27 67 views

Trả lời

19

Google đã thực hiện điều này INCREDIBLY đơn giản với thư viện Zebra Crossing của họ. Họ có hỗ trợ để thực hiện quét qua hình ảnh trên những nền tảng sau:

  • J2SE
  • Android

và những người khác đã chuyển đến:

  • J2ME
  • CSharp
  • CPP
  • Rim
  • iPhone
  • Bug

Như một poster đã đề cập, trên Android, bạn cũng có thể sử dụng một Intent gọi Barcode Reader với một cái gì đó như:

public Button.OnClickListener mScan = new Button.OnClickListener() { 
    public void onClick(View v) { 
     Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
     intent.putExtra("SCAN_MODE", "ONE_D_MODE"); 
     startActivityForResult(intent, 0); 
    } 
}; 

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    if (requestCode == 0) { 
     if (resultCode == RESULT_OK) { 
      String contents = intent.getStringExtra("SCAN_RESULT"); 
      String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); 
      // Handle successful scan 
     } else if (resultCode == RESULT_CANCELED) { 
      // Handle cancel 
     } 
    } 
} 
+2

vấn đề với ZXing - lần cuối cùng tôi kiểm tra - là nó không hoạt động với cam lấy nét cố định, hầu hết các điện thoại di động (giá rẻ || iPhone 2G) có –

0

Rõ ràng là có thể đọc mã vạch từ hình ảnh của nó. Bạn có thể cần suy nghĩ về các vấn đề như

  • Định hướng; có lẽ ảnh không thẳng, vì vậy các thanh không thẳng đứng. Ngoài ra, nó có thể bị lộn ngược ...
  • Tập trung; nếu bắn bị mờ thì sao? Có thể là một giới hạn mà nó trở thành không thể giải thích nó một cách an toàn.
  • Cắt; điều gì sẽ xảy ra nếu khung hình bị hỏng, vì vậy toàn bộ mã không có trong hình ảnh?

Có rất nhiều dự án và sản phẩm hiện có giải quyết vấn đề này ... Here is one, chẳng hạn. Một số giải pháp dường như không nhạy cảm với các điểm như trên, nhưng yêu cầu có thể tìm và nhận dạng mã vạch bất kể định hướng và vị trí trong hình ảnh chẳng hạn.

2

Đối với Android, việc này rất dễ dàng. Chỉ cần sử dụng dịch vụ được cung cấp bởi ứng dụng Máy quét mã vạch (phụ thuộc). Sau đó, ứng dụng Máy quét mã vạch sẽ xử lý tất cả phần quét và sẽ chỉ trả lại mã cho bạn.

Tôi nghĩ rằng các giải pháp tương tự có sẵn cho các nền tảng khác, nhưng trong Android nó thậm chí còn dễ dàng hơn vì kiến ​​trúc Intent của nó.

4

Có thể đọc mã vạch thông qua phân tích được lấy từ máy ảnh điện thoại.

Một biến chứng nổi tiếng là máy ảnh lấy nét cố định (như trên iPhone 2G/3G cũ hơn và một số Android) không thể chụp ở những khoảng cách ngắn trong tiêu cự. Để chống lại điều đó, các thuật toán "giải mã" đặc biệt phải được sử dụng - và lần cuối tôi kiểm tra điều này không phải là một phần của Zebra Crossing.

Một số đã triển khai giải pháp - tôi biết các ứng dụng sau dành cho iPhone có thể đọc UPC với máy ảnh lấy nét cố định: pic2shop (Benoit Maison/Vision Smarts), RedLaser (Occipital) và ShopSavvy (Big in Japan) - kiểm tra chúng ra và tôi nghĩ rằng tất cả chúng đều có sẵn SDK cho các bên thứ 3 quan tâm.

+0

Bạn có thể giải thích ý nghĩa của bạn bằng ảnh chụp nhanh thuật toán de-convoluting đặc biệt? – unj2

+0

Đó là 'deconvolution' - 'de-convoluting' không phải là thuật ngữ chính xác. – mmr

1

Tôi khuyên bạn nên chọn giải pháp cũng giải mã mã vạch trong hình ảnh bị mờ. Có rất nhiều điện thoại Android cấp thấp chỉ có máy ảnh lấy nét cố định và yêu cầu các giải pháp xử lý ảnh phức tạp hơn so với phương pháp phân tích nhị phân mà các giải pháp phần mềm được liệt kê ở trên cung cấp. Ví dụ về các giải pháp nâng cao hơn bao gồm redlaser hoặc Scandit barcode scanner SDK.

SDK Scandit rất dễ tích hợp và đi kèm với phiên bản cộng đồng miễn phí. Ngoài ra còn có product API giúp dễ dàng chuyển đổi số mã vạch thành tên sản phẩm.

Tuyên bố từ chối trách nhiệm: Tôi là một trong những người đồng sáng lập của Scandit.

0

Chỉ cần cập nhật cho tất cả những người mới tìm kiếm câu trả lời cho câu hỏi này, Google hiện cung cấp Barcode Detection Apis qua Dịch vụ của Google Play để đơn giản hóa việc quét mã vạch bằng camera của điện thoại. Không cần phải phụ thuộc vào Apis của bên thứ ba nữa.

Các vấn đề liên quan