30/09/2018, 17:35

Hàm tự động xoay ảnh có điều kiện

Mình muốn xoay ảnh theo từng độ, rồi nó kiểm tra với hàm xử lý ảnh của mình.
Hàm xử lý ảnh của mình là đọc biển số xe, xoay ảnh cho nó đọc đúng biển số. Tại vì mình dùng opencv training nó là chỉ đọc tốt nhất khi biển số theo phương ngang. Mà mình chụp thì nó thường xiêu xiêu vẹo vẹo nên phải xoay ảnh lại.
Nếu bức ảnh xoay ở chiều đó hàm xử lý ảnh được rồi thì nó sẽ dừng lại.

Mình muốn là nó tự động lặp rồi kiểm tra thấy thì dừng lại qua tấm khác.

Mà mình dùng opencv training nó chỉ chính xác được 60-75% trong khi mình thấy trong mấy siêu thị phần mềm của họ đọc được biển số chính xác gần như 100% quẹt thẻ phát là nó báo trùng khớp trên màn hình liền.

Đại khái ý là lặp cho nó xoay từng độ, ở độ 1" > không thành công, nhảy qua 2 độ > không thành công, qua độ 3 > ok, thành công và nhảy khỏi vòng lặp.
Mình nghĩ là như thế này.

bool processimageflag = false;    //processimage represent function.
private void RoteImage()
{
      // làm cái gì đó thì mình đang hỏi.
}
private void btnXuLy()
{
    foreach(...)
    {
         if(processimageflag == true)
         {
               RoteImage();
         }
    }
}

private void ProcessImage()
{
     return processimageflag;
}
Mr. July viết 19:46 ngày 30/09/2018

Sao bạn không thể hỏi lại cụ thể ở đây nhỉ? Chỉ cần copy paste sang đây là bạn đỡ được bao nhiêu công của mọi người rồi đó.

r0ysy0301 viết 19:37 ngày 30/09/2018

Bạn đợi mình xíu nha, mình đang cập nhật lại bài viết, tại đang cần gấp nên mình đăng lên dần rồi lát mình remove link stackoverflow. Mình có chỉnh sửa lại 1 chút nữa mình cập nhật đủ…
Cảm ơn bạn đã góp ý.

r0ysy0301 viết 19:39 ngày 30/09/2018

Mình vừa sửa xong.
Bạn thông cảm mới nãy gấp quá.

Mr. July viết 19:39 ngày 30/09/2018

Đại khái ý là lặp cho nó xoay từng độ, ở độ 1" > không thành công, nhảy qua 2 độ > không thành công, qua độ 3 > ok, thành công và nhảy khỏi vòng lặp.

Bạn xem và thử tìm cách viết với hàm này đi: http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/warp_affine/warp_affine.html
Trong đó có cả code demo, bạn tìm cách lấy tham số sao cho nó đúng với ý bạn là từng độ 1.
Mình nghĩ dù bức ảnh thế nào thì thuật toán của bạn vẫn bắt được biển số đúng ko? Vậy với từng ảnh đã quay thì nó đều bắt được 1 biển, và với mỗi biển đều cho ra 1 kết quả, bạn làm sao để biết két quả này là “không thành công”?
Mình đi 1 vài chung cư gửi xe thì thấy họ chỉ chụp ảnh, rồi cho ảnh đó 1 ID, đưa thẻ cho mình giữ, sau đó, khi mình ra lấy xe , thì họ quét thẻ theo ID rồi nhìn vào màn hình ảnh biển số sẽ hiện ra, là người so nên tỉ lệ chính xác mới 100% được bạn à, chứ 1 hệ thống thực sự tự động thì khó mà có tỉ lệ đó

r0ysy0301 viết 19:51 ngày 30/09/2018

À, mình hiểu rồi.
Ra là so id nên mới chính xác 100%.
Tại mình làm 1 hệ thống tự động 1 cổng riêng cho những người đăng ký họ tự vào quét vân tay hay nhận diện khuôn mặt rồi nhận diện biển số.
Thuật toán nhận dạng của mình bị 1 chỗ là biển số phải thẳng đúng nó mới đóng khung vô biển số được. Rồi từ đó mới bóc tách ký tự.
Nên mình mới phải xoay ảnh cho nó nhận được vì người ra vô không dựng xe thẳng đứng. Nên phải có 1 hàm xoay biển số(xoay ra sao thì kệ nó, vì nó xoay 1 độ là nó nhảy vô hàm xử lý hình ảnh, nếu xử lý được thì break.
Mình cho nó xoay 20-30 độ thôi vì xe vô không nghiêng nhiều lắm chứ để nó foreach nó tốn thời gian.

Còn 1 bên cổng khách ra vào thường xuyên thì so id rồi so ảnh như bạn nói.

r0ysy0301 viết 19:46 ngày 30/09/2018

Up!!! Bạn nào giúp mình với.

Bài liên quan
0