opencv 图像旋转
时间: 2023-10-20 18:06:44 浏览: 63
在使用OpenCV进行图像旋转时,你可以使用cv2.getRotationMatrix2D函数来获取旋转矩阵,该函数需要传入旋转中心点的坐标、旋转角度和缩放比例。然后你可以使用cv2.warpAffine函数将旋转矩阵应用于图像,实现旋转。
以下是一个示例代码来演示如何使用OpenCV进行图像旋转:
```
import cv2
# 读取图像
src = cv2.imread('./resource/image_A.png')
# 获取图像的行数、列数和通道数
rows, cols, channel = src.shape
# 绕图像的中心点旋转30度,逆时针旋转,并缩小到0.5
M = cv2.getRotationMatrix2D((cols/2, rows/2), angle=30, scale=0.5)
rotated_img = cv2.warpAffine(src, M, (cols, rows))
# 显示旋转后的图像
cv2.imshow('Rotated Image', rotated_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
相关问题
opencv图像旋转
在OpenCV中,可以使用getRotationMatrix2D函数来实现图像旋转。该函数接受三个参数:旋转中心点坐标、旋转角度和缩放比例。例如,可以使用以下代码来旋转图像:
```
void rotate_demo(Mat& image) {
Mat dst, M;
int w = image.rows;
int h = image.cols;
// M 是用来旋转变换相乘的矩阵
M = getRotationMatrix2D(Point2f(w / 2, h / 2), 45, 1.0);
// 计算新画布的尺寸
double cos = abs(M.at(0, 0));
double sin= abs(M.at(0, 1));
int nw = cos * w + sin * h;//新画布的宽
int nh = sin * w + cos * h;//新画布的高
// 将目标图像移到中心
M.at(0, 2) = (nw / 2 - w / 2);
M.at(1, 2) = (nh / 2 - h / 2);
// 进行仿射变换
warpAffine(image, dst, M, Size(nw,nh), INTER_LINEAR, 0, Scalar(0,255,0));
imshow("旋转图像", dst);
}
```
这个函数会将图像绕指定的中心点旋转一定角度,并且可以通过缩放比例来调整图像大小。在函数中,我们首先计算了新画布的尺寸,然后根据计算得到的矩阵M进行仿射变换,最后显示旋转后的图像。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [opencv图像旋转](https://download.csdn.net/download/u013088062/8303155)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [opencv图像处理——图像旋转](https://blog.csdn.net/sun_rui_houqi/article/details/108836570)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
openCV图片旋转
在OpenCV中,可以使用函数getRotationMatrix2D和warpAffine来实现图像旋转。在代码示例中,首先使用getRotationMatrix2D函数获取旋转变换的矩阵M,其中包括旋转中心点、旋转角度和缩放比例。然后,根据矩阵M的值计算新画布的宽度和高度,并将目标图像移动到新画布的中心。最后,使用warpAffine函数对图像进行旋转变换。
另外,在OpenCV中还提供了函数getAffineTransform,用于求取仿射变换矩阵M。该函数需要输入三个点的坐标作为参数,可以用于图像旋转的仿射变换中。
总之,通过使用OpenCV中的相应函数,可以实现对图像进行旋转,并保持图像的原始尺寸。旋转过程中,可能会发生坐标的变换,需要进行相应的转换操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [opencv图像处理——图像旋转](https://blog.csdn.net/sun_rui_houqi/article/details/108836570)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [利用opencv怎样旋转一幅图像](https://blog.csdn.net/yangSHU21/article/details/131150241)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]