【OpenCV ? c++】图像几何变换 | 图像旋转
发布人:shili8
发布时间:2024-12-31 07:47
阅读次数:0
**图像几何变换 | OpenCV C++**
在计算机视觉领域,图像几何变换是指对图像进行位置、尺寸或方向的变化。这些变换可以用来实现各种功能,如图像拼接、图像识别等。在本文中,我们将重点介绍OpenCV C++中的图像旋转。
**图像旋转**
图像旋转是一种常见的几何变换,涉及将图像旋转一定角度。OpenCV提供了多种函数来实现图像旋转,包括:
* `cv::getRotationMatrix2D`:计算旋转矩阵* `cv::warpAffine`:使用旋转矩阵进行图像变换###1. 计算旋转矩阵首先,我们需要计算旋转矩阵。OpenCV提供了一个函数`cv::getRotationMatrix2D`来实现这一点。
cpp#includeint main() { // 原始图像 cv::Mat src = cv::imread("image.jpg"); // 旋转角度(单位:度) double angle =45.0; // 旋转中心点坐标 cv::Point2f center(src.cols /2, src.rows /2); // 计算旋转矩阵 cv::Mat rotation_matrix = cv::getRotationMatrix2D(center, angle,1.0); return0; }
在上面的代码中,我们使用`cv::imread`函数读取原始图像,然后计算旋转矩阵。`cv::getRotationMatrix2D`函数需要三个参数:旋转中心点坐标、旋转角度和缩放因子(本例中为1.0)。
###2. 使用旋转矩阵进行图像变换接下来,我们使用旋转矩阵来进行图像变换。OpenCV提供了一个函数`cv::warpAffine`来实现这一点。
cpp#includeint main() { // 原始图像 cv::Mat src = cv::imread("image.jpg"); // 旋转角度(单位:度) double angle =45.0; // 旋转中心点坐标 cv::Point2f center(src.cols /2, src.rows /2); // 计算旋转矩阵 cv::Mat rotation_matrix = cv::getRotationMatrix2D(center, angle,1.0); // 使用旋转矩阵进行图像变换 cv::Mat dst; cv::warpAffine(src, dst, rotation_matrix); return0; }
在上面的代码中,我们使用`cv::warpAffine`函数来对原始图像进行变换。这个函数需要三个参数:原始图像、旋转矩阵和输出图像。
###3. 使用 OpenCV 中的 `cv::rotate` 函数OpenCV 还提供了一个函数 `cv::rotate` 来直接实现图像旋转。
cpp#includeint main() { // 原始图像 cv::Mat src = cv::imread("image.jpg"); // 旋转角度(单位:度) double angle =45.0; // 使用 OpenCV 中的 cv::rotate 函数进行图像旋转 cv::Mat dst; cv::rotate(src, dst, cv::ROTATE_90_COUNTERCLOCKWISE); return0; }
在上面的代码中,我们使用 `cv::rotate` 函数来对原始图像进行变换。这个函数需要三个参数:原始图像、旋转方式和输出图像。
### 总结本文介绍了 OpenCV C++ 中的图像几何变换,特别是图像旋转。我们通过计算旋转矩阵和使用 `cv::warpAffine` 函数来实现图像旋转,并且还介绍了使用 OpenCV 中的 `cv::rotate` 函数直接实现图像旋转。