opencv旋转任意角度
时间: 2023-11-17 08:00:19 浏览: 103
可以使用cv::getRotationMatrix2D和cv::warpAffine函数来实现opencv旋转任意角度的操作。具体实现可以参考以下代码:
```cpp
cv::Mat src = cv::imread("image.jpg");
cv::Mat dst;
double angle = 45; // 旋转角度
cv::Point2f center(src.cols / 2, src.rows / 2); // 旋转中心
cv::Mat rot = cv::getRotationMatrix2D(center, angle, 1); // 获取旋转矩阵
cv::warpAffine(src, dst, rot, src.size()); // 进行旋转
```
其中,src为原始图像,dst为旋转后的图像,angle为旋转角度,center为旋转中心,rot为旋转矩阵,cv::warpAffine函数用于进行仿射变换。
相关问题
python opencv旋转任意度数代码
以下是 Python OpenCV 旋转任意度数的代码:
```python
import cv2
import numpy as np
def rotate_image(image, angle):
height, width = image.shape[:2]
rotation_matrix = cv2.getRotationMatrix2D((width/2, height/2), angle, 1)
rotated_image = cv2.warpAffine(image, rotation_matrix, (width, height))
return rotated_image
```
其中,`image` 是要旋转的图像,`angle` 是旋转的角度。函数返回旋转后的图像。
例如,要将图像 `img` 逆时针旋转 30 度,可以这样调用函数:
```python
rotated_img = rotate_image(img, 30)
```
希望这个代码对你有帮助!
c++使用opencv使图像旋转任意角度
在C++中使用OpenCV库使图像旋转任意角度,可以通过以下步骤实现:
1. 计算旋转矩阵:使用`cv::getRotationMatrix2D`函数计算图像旋转指定角度后的旋转矩阵。这个函数需要三个参数:图像中心点坐标、旋转角度和缩放因子。
2. 应用旋转矩阵:使用`cv::warpAffine`函数应用上一步得到的旋转矩阵来旋转图像。`warpAffine`函数需要原图像、旋转矩阵以及输出图像的尺寸作为参数。
下面是一个示例代码:
```cpp
#include <opencv2/opencv.hpp>
int main() {
// 加载原始图像
cv::Mat src = cv::imread("path_to_image.jpg");
if (src.empty()) {
std::cerr << "Error loading image." << std::endl;
return -1;
}
// 图像中心点
cv::Point2f center(src.cols / 2.0F, src.rows / 2.0F);
// 旋转角度
double angle = 30.0; // 旋转30度
// 缩放因子,1.0表示不缩放
double scale = 1.0;
// 计算旋转矩阵
cv::Mat rot = cv::getRotationMatrix2D(center, angle, scale);
// 存储旋转后的图像
cv::Mat dst;
// 应用旋转矩阵
cv::warpAffine(src, dst, rot, src.size());
// 显示图像
cv::imshow("Rotated Image", dst);
// 等待按键
cv::waitKey(0);
return 0;
}
```
在这段代码中,首先包含了OpenCV的头文件,并在`main`函数中加载了图像。然后计算了旋转矩阵,并将其应用到原图上以获取旋转后的图像。最后显示了旋转后的图像。
阅读全文