Xoay ảnh theo đường thẳng

Bài viết này dịch lại từ tiếng Anh, hướng dẫn cách sử dụng chuột để xoay ảnh.

Bài viết này là ví dụ về cách xử lý sự kiện click chuột và xoay ảnh bằng phương pháp đơn giản nhất.



Mục tiêu

Với 1 ảnh bất kỳ, chúng tôi vẽ 1 đường thẳng trên đó và ảnh sẽ xoay sao cho đường đó nằm ngang.

straightening_up_image_1

straightening_up_image_2

straightening_up_image_3

Trong OpenCV chúng tôi dùng warpAffine() để phục hồi góc xoay đã bị thay đổi. Hàm main() load ảnh và hiển thị, hàm on_mouse() sẽ lắng nghe các sự kiện click chuột. Khi người dùng click vào ảnh, vị trí đó sẽ là điểm đầu, click tiếp theo sẽ là điểm cuối của đường thẳng.

Khi có được 2 điểm thì chúng ta tính được góc của đường thẳng. Góc này được sử dụng để tính ma trận xoay trong hàm warpAffine(). Chúng ta viết hàm straighten_image() để để xoay ảnh, tham số truyền vào là vector chứa 2 điểm.

Kết quả như hình dưới
Xoay ảnh theo đường thẳngXoay ảnh theo đường thẳng
Ảnh 1 (a) Ảnh gốc (b) Ảnh đã sửa

Nguồn http://opencv-code.com/tutorials/straightening-up-an-image/

Leave a Reply