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

import cv2
from matplotlib import pyplot as plt
image = cv2.imread['project.jpg']
rows,cols,channels= image.shape

Bước 2. Xoay hình ảnh

Chú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

  • src. Ảnh cần xoay
  • xoay Mã. Loại vòng quay

Có ba mã xoay vòng có sẵn trong OpenCV. họ đang

  • cv2. XOAY_90_CHIỀU ĐỒNG HỒ. Xoay hình ảnh theo chiều kim đồng hồ 90 độ
  • cv2. XOAY_90_COUNTERCÂY ĐỒNG HỒ. Xoay hình ảnh theo hướng ngược chiều kim đồng hồ 90 độ
  • cv2. XOAY_180. Xoay hình ảnh theo chiều kim đồng hồ 180 độ

rotate_90 = cv2.rotate[image, cv2.ROTATE_90_CLOCKWISE]
rotate_90_counter = cv2.rotate[image, cv2.ROTATE_90_COUNTERCLOCKWISE]
rotate_180 = cv2.rotate[image, cv2.ROTATE_180]

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

  • trung tâm. Điểm quay trung tâm trong hình ảnh đã cho
  • góc. Góc quay. [Giá trị dương biểu thị xoay theo chiều kim đồng hồ trong khi giá trị âm biểu thị xoay ngược chiều kim đồng hồ]
  • tỉ lệ. Hệ số tỷ lệ đẳng hướng

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_like

mảng đầu vào

góc trôi nổi

Góc quay tính bằng độ

trục bộ gồm 2 số nguyên, tùy chọn

Hai 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ọn

Nế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

đầu ra mảng hoặc dtype, tùy chọn

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ọn

Thứ 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ọn

Tham 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

'gần nhất' [a a a a. A B C D. d d d d]

Đầ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ọn

Giá 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ọn

Xá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

Chủ Đề