调整图像大小时:
- 如果您想在调整大小的图像中也保持相同,请务必记住图像的原始纵横比(即宽度与高度)。
- 减小图像的大小将需要对像素进行重新采样。
- 增加图像的大小需要重建图像。这意味着您需要插入新像素。
1.阅读图像
先引入头文件:
#include<opencv2/opencv.hpp> #include<iostream> // Namespace to nullify use of cv::function(); syntax using namespace std; using namespace cv;
接下来,使用imread()前面文章中讨论的函数读取测试图像。语法如下所示:
以上述图片为研究对象
// Reading image Mat image = imread("image.jpg");
在开始调整图像大小之前,请了解其原始大小。要获取图像的大小:
在 C++ 中:
- image.rows给你高度
- image.columns给你图像的宽度
size()使用该函数 也可以获得上述结果。
- image.size().width返回宽度
- image.size().height返回高度
// Get height and width cout << "Original Height and Width :" << image.rows << "x" << image.cols << endl;
2.通过指定宽度和高度调整大小
在第一个示例中,让我们通过指定将缩小图像的新宽度和高度来调整图像大小。在下面的代码中:
- 我们将所需的宽度设置为 300,将所需的高度设置为 200。
- 这两个值组合在resize()函数所需的二维向量中。
- 我们还指定了插值方法,它恰好是默认值。
// Set rows and columns // lets downsize the image using new width and height int down_width = 300; int down_height = 200; Mat resize_down; // resize down resize(image, resize_down, Size(down_width, down_height), INTER_LINEAR);
3.显示图片
使用OpenCVimshow()中的函数显示所有图像。
// Display Images and press any key to continue imshow("Resized Down by defining height and width", resized_down); waitKey(); imshow("Resized Up image by defining height and width", resized_up); waitKey(); destroyAllWindows();
4.使用不同的插值方法调整大小
5.终极代码
// let's start with including libraries #include<opencv2/opencv.hpp> #include<iostream> // Namespace to nullify use of cv::function(); syntax using namespace std; using namespace cv; int main() { // Read the image using imread function Mat image = imread("image.jpg"); imshow("Original Image", image); // let's downscale the image using new width and height int down_width = 300; int down_height = 200; Mat resized_down; //resize down resize(image, resized_down, Size(down_width, down_height), INTER_LINEAR); // let's upscale the image using new width and height int up_width = 600; int up_height = 400; Mat resized_up; //resize up resize(image, resized_up, Size(up_width, up_height), INTER_LINEAR); // Display Images and press any key to continue imshow("Resized Down by defining height and width", resized_down); waitKey(); imshow("Resized Up image by defining height and width", resized_up); waitKey(); destroyAllWindows(); return 0; }