如何使用 C++ 在 OpenCV 中更改图像大小并添加边框?

opencvc++server side programmingprogramming更新于 2025/5/14 9:07:17

在本主题中,我们将看到轨迹栏的另一个应用。在这里,我们将使用轨迹栏更改图像的大小并为图像添加边框,并使用轨迹栏更改边框的大小。

使用以下程序,我们可以更改图像的大小、添加边框、更改边框的大小并旋转图像。它与前面的示例类似。

以下程序演示了如何在同一个轨迹栏中添加多个滑块。

示例

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;
   int Rotate = 180;//初始化角度//
   int Scale = 50;//初始化比例//
   int Border = 0;//初始边框//
   Mat before_Rotate;//声明旋转前的矩阵//
   int vertical = 0;//初始垂直值//
   int Horizo​​ntal = 0;//初始水平值//
   void rotator(int, void*){//旋转图像的函数//
   Mat Rotation = getRotationMatrix2D(Point(horizo​​ntal, vertical),(Rotate - 180), Scale / 50.0);//用于二维旋转的仿射变换矩阵//
   Mat Rotated;//用于旋转图像的矩阵
   warpAffine(before_Rotate, Rotated, Rotation, before_Rotate.size(), INTER_LINEAR, Border, Scalar());//应用仿射变换//
   imshow("RotatedImage", Rotated);//显示旋转图像//
}
int main(int argc,char**argv) {
   before_Rotate = imread("sky.jpg");//在矩阵中加载图像//
   vertical = before_Rotate.rows / 2;//获取垂直像素的中点//
   horizo​​ntal = before_Rotate.cols / 2;//获取水平像素的中点//
   namedWindow("BeforeRotate");//声明窗口以显示旋转前的图像//
   imshow("BeforeRotate", before_Rotate);//显示旋转前的图像//
   namedWindow("AfterRotate");//声明窗口以显示旋转后的图像//      
   createTrackbar("Angle", "AfterRotate", &Rotate, 360, rotator);//创建用于旋转的轨迹条//
   createTrackbar("Scale", "AfterRotate", &Scale, 100, rotator);//创建用于改变大小的轨迹条//
   createTrackbar("Border Mode", "After Rotate", &Border, 5, rotator);//创建用于添加边框的轨迹条//
   int cbfunction = 0;//初始化 rotator 函数的参数值//
   rotator(cbfunction, &cbfunction);//回调rotator函数//
   waitKey(0);//等待按键//
   return 0;
}

输出


相关文章