opencv中图像旋转
时间: 2023-10-11 11:07:11 浏览: 59
在OpenCV中,可以使用函数cv2.getRotationMatrix2D()来获得旋转矩阵,然后使用cv2.warpAffine()函数将图像旋转。
下面是一个示例代码,将图像逆时针旋转30度:
```python
import cv2
import numpy as np
img = cv2.imread('image.jpg', cv2.IMREAD_COLOR)
rows, cols = img.shape[:2]
# 定义旋转角度
angle = 30
# 计算旋转矩阵
M = cv2.getRotationMatrix2D((cols/2, rows/2), angle, 1)
# 进行旋转
rotated = cv2.warpAffine(img, M, (cols, rows))
cv2.imshow('Original Image', img)
cv2.imshow('Rotated Image', rotated)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,函数cv2.getRotationMatrix2D()的参数包括旋转中心点坐标、旋转角度和缩放因子。函数cv2.warpAffine()的参数包括输入图像、旋转矩阵和输出图像大小。
相关问题
opencv中图像旋转比较快得方法
在CV 中,可以使用 `cv::warpAffine` 函数来快速旋转图像。该函数可以通过提供旋转矩阵来执行图像旋转。
下面是一个示例代码,演示如何使用 `cv::warpAffine` 函数将图像旋转 45 度:
```c++
#include <opencv2/opencv.hpp>
int main()
{
cv::Mat image = cv::imread("image.jpg");
double angle = 45; // 旋转角度
cv::Point2f center(image.cols / 2, image.rows / 2); // 旋转中心点
// 计算旋转矩阵
cv::Mat rotation = cv::getRotationMatrix2D(center, angle, 1);
// 执行图像旋转
cv::Mat rotatedImage;
cv::warpAffine(image, rotatedImage, rotation, image.size());
cv::imshow("Original Image", image);
cv::imshow("Rotated Image", rotatedImage);
cv::waitKey(0);
return 0;
}
```
在这个示例中,我们首先读取了一个图像,然后指定旋转角度和中心点。接下来,我们使用 `cv::getRotationMatrix2D` 函数计算旋转矩阵,最后使用 `cv::warpAffine` 函数旋转图像并显示结果。
这种方法比较快速,并且适用于任意角度的图像旋转。
opencv java 图像旋转
以下是使用Java OpenCV进行图像旋转的示例代码:
```java
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class ImageRotation {
public static void main(String[] args) {
// 加载OpenCV库
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// 读取图像
Mat src = Imgcodecs.imread("path/to/input/image.jpg");
// 定义旋转中心点
Point center = new Point(src.cols() / 2, src.rows() / 2);
// 定义旋转角度(正值为顺时针旋转)
double angle = 45;
// 定义缩放比例
double scale = 1;
// 计算旋转矩阵
Mat rotationMatrix = Imgproc.getRotationMatrix2D(center, angle, scale);
// 执行旋转操作
Mat rotated = new Mat();
Imgproc.warpAffine(src, rotated, rotationMatrix, new Size(src.cols(), src.rows()));
// 保存旋转后的图像
Imgcodecs.imwrite("path/to/output/rotated_image.jpg", rotated);
}
}
```
请注意,上述代码中的`"path/to/input/image.jpg"`应替换为实际图像文件的路径,`"path/to/output/rotated_image.jpg"`应替换为旋转后图像的保存路径。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)