Python xoay hình ảnh xung quanh điểm
Trước tiên chúng ta hãy nhập các thư viện cần thiết và đọc hình ảnh. Hãy để chúng tôi cũng lưu trữ kích thước của hình ảnh bằng cách sử dụng. hàm hình dạng (). Hình ảnh mà chúng tôi đang sử dụng ở đây là hình ảnh được hiển thị bên dưới
Bước 2. Xoay hình ảnhChúng tôi có thể xoay một hình ảnh nhất định bằng OpenCV theo hai cách. Một là sử dụng cv. rotate() chức năng và khác đang sử dụng cv2. hàm getRotationMatrix2D(). Hãy để chúng tôi xem chi tiết từng chức năng hoạt động như thế nào cv2. hàm rotate() nhận hai tham số. họ đang
Có ba mã xoay vòng có sẵn trong OpenCV. họ đang
Một nhược điểm trong phương pháp này là hình ảnh chỉ có thể được xoay theo bội số của 90 độ. Điều gì sẽ xảy ra nếu chúng ta muốn xoay một hình ảnh 70 độ? . getRotationMatrix2D() đi vào hoạt động. Hàm này nhận các tham số đầu vào sau
cv2. getRotationMatrix2D() trả về ma trận chuyển đổi có thể được sử dụng trên bất kỳ hình ảnh nào bằng cv2. hàm warpAffine() Mảng được xoay trong mặt phẳng được xác định bởi hai trục được cung cấp bởi tham số axis sử dụng phép nội suy spline của thứ tự được yêu cầu Thông số . đầu vào mảng_likemảng đầu vào góc trôi nổiGóc quay tính bằng độ trục bộ gồm 2 số nguyên, tùy chọnHai trục xác định mặt phẳng quay. Mặc định là hai trục đầu tiên định hình lại bool, tùy chọnNếu định hình lại là đúng, hình dạng đầu ra được điều chỉnh sao cho mảng đầu vào được chứa hoàn toàn trong đầu ra. Mặc định là Đúng Mảng để đặt đầu ra hoặc dtype của mảng được trả về. Theo mặc định, một mảng có cùng loại với đầu vào sẽ được tạo thứ tự int, tùy chọnThứ tự nội suy spline, mặc định là 3. Thứ tự phải nằm trong khoảng 0-5 mode {'phản chiếu', 'gương lưới', 'hằng số', 'hằng số lưới', 'gần nhất', 'gương', 'quấn lưới', 'quấn'}, tùy chọnTham số chế độ xác định cách mảng đầu vào được mở rộng ra ngoài ranh giới của nó. Mặc định là 'không đổi'. Hành vi cho từng giá trị hợp lệ như sau (xem các sơ đồ bổ sung và chi tiết trên) 'phản ánh' (d c b a. A B C D. đ c b a)Đầu vào được mở rộng bằng cách phản ánh về cạnh của pixel cuối cùng. Chế độ này đôi khi còn được gọi là đối xứng nửa mẫu 'gương lưới'Đây là một từ đồng nghĩa với 'phản ánh' 'không đổi' (k k k k. A B C D. k k k k)Đầu vào được mở rộng bằng cách điền tất cả các giá trị ngoài cạnh với cùng một giá trị không đổi, được xác định bởi tham số cval. Không có phép nội suy nào được thực hiện ngoài các cạnh của đầu vào 'hằng số lưới' (k k k k. A B C D. k k k k)Đầu vào được mở rộng bằng cách điền tất cả các giá trị ngoài cạnh với cùng một giá trị không đổi, được xác định bởi tham số cval. Nội suy cũng xảy ra đối với các mẫu nằm ngoài phạm vi của đầu vào Đầu vào được mở rộng bằng cách sao chép pixel cuối cùng ‘tấm gương’ (d c b. A B C D. c b a)Đầu vào được mở rộng bằng cách phản ánh về trung tâm của pixel cuối cùng. Chế độ này đôi khi cũng được gọi là đối xứng toàn bộ mẫu 'quấn lưới' (a b c d. A B C D. A B C D)Đầu vào được mở rộng bằng cách quấn quanh cạnh đối diện 'quấn' (d b c d. A B C D. b c a b)Đầu vào được mở rộng bằng cách bao quanh cạnh đối diện, nhưng theo cách sao cho điểm cuối cùng và điểm đầu trùng khớp chính xác. Trong trường hợp này, không xác định rõ mẫu nào sẽ được chọn tại điểm chồng lấp cval vô hướng, tùy chọnGiá trị để lấp đầy các cạnh đầu vào trong quá khứ nếu chế độ là 'không đổi'. Mặc định là 0. 0 bộ lọc trước bool, tùy chọnXác định xem mảng đầu vào có được lọc trước trước khi nội suy hay không. Giá trị mặc định là True, sẽ tạo một mảng float64 tạm thời gồm các giá trị được lọc nếu thứ tự > 1. Nếu đặt giá trị này thành Sai, đầu ra sẽ hơi mờ nếu thứ tự > 1, trừ khi đầu vào được lọc trước, tôi. e. đó là kết quả của việc gọi đầu vào ban đầu |