2016-08-04 14 views
5

Có thể không tìm kiếm giải pháp, nhưng tìm kiếm hướng dẫn về điều này. Điều này là để triển khai "trình quét tài liệu" trong ứng dụng Android của chúng tôi.Trang/cạnh phát hiện và biến đổi trang Android. Chuyển đổi thành B/W tiff

tôi cần phải làm một cách chính xác này:

  1. Đưa những hình ảnh với máy ảnh (không có vấn đề)
  2. Phát hiện cạnh trang/góc (???)
  3. Cho phép người dùng di chuyển/điều chỉnh góc (không vấn đề)
  4. Biến đổi hình ảnh để làm hình chữ nhật (???)
  5. Chuyển đổi hình ảnh sang B/W TIFF hoặc một số định dạng thích hợp khác để truyền qua mạng di động (nhỏ gọn, bit trên mỗi pixel) (???)

Những gì tôi đã thử. Chúng tôi đã cố gắng sử dụng Open CV. Nó rất lớn, có NDK. Thiết lập và cơ sở hạ tầng khá phức tạp.

Có thứ gì nhẹ hơn và được thiết kế cho chính xác tác vụ này không? Ngay cả thương mại cũng có thể ổn.

Chỉ cần tìm kiếm gợi ý về cách tiếp cận này .. Vấn đề chính là để phát hiện các cạnh và biến tôi nghĩ ..

Trả lời

3

Tôi không biết về bất kỳ thư viện mà sẽ xử lý việc này cho bạn, nhưng tôi đã đi qua vài dự án mã nguồn mở đạt được kết quả tương tự. Hầu hết đều dựa trên thư viện OpenCV và/hoặc OpenCV4Android SDK. Dưới đây là một số dự án đáng chú ý:

Một thư viện tương tự là của Google Mobile Vision API, trong đó có một Text Recognition API. Mặc dù điều này sẽ không cho phép bạn chuyển đổi một tài liệu thành một hình ảnh màu đen và trắng, nó sẽ cho phép bạn chuyển đổi một tài liệu thành văn bản thuần túy.

Để chuyển đổi hình ảnh để truyền qua mạng; Android không phải là định dạng tệp TIFF natively support, mặc dù có ít nhất one library sẽ xử lý chuyển đổi này cho bạn. Android thực sự hỗ trợ nén hình ảnh là JPEG, PNG or WEBP, mà bạn có thể sử dụng để gửi dữ liệu qua mạng dưới dạng chuỗi được mã hóa:

ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream); 
byte[] bytes = outputStream.toByteArray(); 
String encodedImage = Base64.encodeToString(bytes, Base64.DEFAULT); 
Các vấn đề liên quan