如何使用Python在OpenCV中执行图像旋转?

 

要按角度执行图像旋转,首先需要获取旋转矩阵。 为了找到旋转矩阵,我们应用 cv2.getRotationMatrix2D() 函数。 此函数的语法为 –

M = cv2.getRotationMatrix2D(cr, degree, scale)

其中 cr 是旋转中心, degree 是图像旋转的角度,而 scale 是缩放图像的比例因子。

旋转矩阵M是2×2矩阵(numpy数组)。 我们将旋转矩阵M作为参数传递给 cv2.warpAffine() 函数。 查看下面的语法 –

语法

cv2.warpAffine(img, M, (width, height))

这里,

  • img - 要旋转的输入图像。

  • M - 上述定义的旋转矩阵。

  • (width,height) -旋转后图像的宽度和高度。

步骤

要执行图像旋转,可以按照下面给出的步骤进行 –

导入所需库。 在所有以下Python示例中,所需的Python库是OpenCV。 确保您已经安装了它。</

### 旋转图像的基本方法 在Python使用OpenCV图像进行旋转,可以通过`cv2.warpAffine`函数结合仿射变换矩阵实现。OpenCV提供了灵活的接口来定义旋转角度和缩放比例。基本流程包括:获取图像的中心点、构建旋转矩阵、应用仿射变换。 以下是一个完整的示例代码: ```python import cv2 import numpy as np # 读取图像 image = cv2.imread('example.jpg') # 获取图像的高度和宽度 height, width = image.shape[:2] # 定义旋转角度和缩放比例(1.0表示不缩放) angle = 45 scale = 1.0 # 获取图像中心点 center = (width // 2, height // 2) # 构建旋转矩阵 rotation_matrix = cv2.getRotationMatrix2D(center, angle, scale) # 应用仿射变换 rotated_image = cv2.warpAffine(image, rotation_matrix, (width, height)) # 显示原始图像旋转后的图像 cv2.imshow('Original Image', image) cv2.imshow('Rotated Image', rotated_image) # 等待按键并关闭窗口 cv2.waitKey(0) cv2.destroyAllWindows() ``` ### 不丢失细节的旋转方法 如果希望图像旋转时不丢失边缘信息,可以使用`imutils`库中的`rotate_bound`函数。该方法会自动调整图像尺寸以包含完整内容[^1]。以下是使用该函数的示例: ```python import imutils # 使用imutils进行无裁剪旋转 rotated_image_full = imutils.rotate_bound(image, angle) # 显示完整旋转后的图像 cv2.imshow('Full Rotated Image', rotated_image_full) cv2.waitKey(0) cv2.destroyAllWindows() ``` ### 注意事项 - 在旋转图像时,可能会出现黑边或部分图像被裁剪的问题。为避免这种情况,可以手动调整目标图像大小或使用`imutils.rotate_bound`函数。 - `cv2.getRotationMatrix2D`允许指定旋转中心、角度和缩放因子,适用于大多数旋转需求。 - 图像路径必须正确,否则程序将无法加载图像文件。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值