21xrx.com
2024-12-22 22:49:05 Sunday
登录
文章检索 我的文章 写文章
C++使用OpenCV旋转和翻转图像
2023-06-28 07:31:41 深夜i     --     --
C++ OpenCV 旋转 翻转 图像

C++是一种被广泛使用的编程语言,而OpenCV是一个流行的图像处理库。同时,旋转和翻转图像也是图像处理中非常关键的操作。本文将介绍如何使用OpenCV在C++中旋转和翻转图像。

1. 旋转图像

旋转图像可以在很多场景下使用,例如在车辆安全监控系统中,需要将车辆图像旋转一定角度以更好地识别车辆。在OpenCV中,可以使用cv::Mat::getRotationMatrix2D函数来得到旋转矩阵,再使用cv::warpAffine函数将图像进行旋转。下面是C++代码示例:


#include <opencv2/opencv.hpp>

int main() {

  // 加载图像

  cv::Mat image = cv::imread("test.png");

  // 计算旋转矩阵

  cv::Point2f center(image.cols/2, image.rows/2);

  cv::Mat rotationMatrix = cv::getRotationMatrix2D(center, 45, 1);

  // 旋转图像

  cv::Mat rotatedImage;

  cv::warpAffine(image, rotatedImage, rotationMatrix, image.size());

  // 显示旋转后的图像

  cv::imshow("Rotated Image", rotatedImage);

  cv::waitKey(0);

  return 0;

}

在上面的示例中,我们加载了一张名为test.png的图像。然后,我们计算了一个旋转矩阵,将图像旋转了45度。最后,我们使用cv::imshow函数显示旋转后的图像。

2. 翻转图像

翻转图像是另一个非常常见的图像处理操作,例如在人脸识别中,有时需要对图像进行水平或垂直翻转以增加训练数据。在OpenCV中,可以使用cv::flip函数对图像进行翻转。下面是一段翻转图像的C++代码:


#include <opencv2/opencv.hpp>

int main() {

  // 加载图像

  cv::Mat image = cv::imread("test.png");

  // 水平翻转

  cv::Mat flippedImage;

  cv::flip(image, flippedImage, 1);

  // 显示翻转后的图像

  cv::imshow("Flipped Image", flippedImage);

  cv::waitKey(0);

  return 0;

}

在上面的示例中,我们加载了一张名为test.png的图像。然后,我们使用cv::flip函数将图像进行水平翻转。最后,我们使用cv::imshow函数显示翻转后的图像。

在实际使用中,还可以将矩阵操作函数进行组合使用,实现更复杂的图像处理,例如对图像进行旋转和翻转。

总结

本文介绍了如何使用OpenCV在C++中旋转和翻转图像。对于需要进行图像处理的开发人员而言,这些操作是非常基础和重要的。我们可以使用以上两种方式对图像进行简单的调整,还可以将这些操作进行组合,实现更加复杂的图像处理。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复