Dựng đứng hình ảnh

Straightening up an image
Dựng đứng hình ảnh

straight_line

I came to this Mathematica demonstration project and cannot wait to see how it could be done in OpenCV. Given an image, we draw a line on the image and the image rotates so that the line is horizontal. Let’s see how we can code this using our library.
Tôi vào trang Mathematica xem project này và không thể chờ xem nó hoàn thành như thế nào trong OpenCV. Cho 1 ảnh, chúng tôi vẽ 1 đường trên đó và ảnh sẽ xoay sao cho đường đó nằm ngang. Hãy xem code chúng tôi sử dụng

straightening_up_image_1

straightening_up_image_2

straightening_up_image_3

In OpenCV we will use warpAffine() to recover the rotational shift of the image. This code also shows an example on how to set a mouse callback in your programs.
Trong OpenCV chúng tôi dùng warpAffine() để phục hồi góc xoay đã bị thay đổi. Code này cũng là 1 ví dụ về cách sử dụng chuột trong chương trình.

The main() function simply load an image and display it in a window. A mouse callback on_mouse() is attached to the window so it will be listening for mouse events. When the user first click the image, the position will be set as the start point of the line. The next click will set the end point of the line.

Hàm main() đơn giản chỉ load ảnh và hiển thị. Hàm on_mouse() bên dưới sẽ lắng nghe các sự kiện của 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.

If two points are obtained, they are passed to straighten_image() function to recover the rotational shift of the image. From the two points we calculate the angle of the line. This angle will be used to obtain the transformation matrix for the warpAffine() function.

Nếu có được 2 điểm, chúng ta dùng tiếp hàm straighten_image() để phục hồi góc quay. Từ 2 điểm đó 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()

The result is shown below. – Kết quả như hình dưới
straight_line_before_straighteningstraight_line_after_straightening
Figure 1. (a) The original image. (b) The corrected image.
Ảnh 1 (a) Ảnh gốc (b) Ảnh đã sửa

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

Leave a Reply