在 OpenCV 中,cv::Mat
类提供了 resize
函数,用于调整图像的大小。该函数可以改变图像的宽度和高度,并可以使用不同的插值方法来控制缩放效果。
resize
方法的基本用法
#include <opencv2/opencv.hpp>
void resizeImage(const cv::Mat& inputImage, cv::Mat& outputImage,
const cv::Size& newSize, int interpolationMethod = cv::INTER_LINEAR) {
cv::resize(inputImage, outputImage, newSize, 0, 0, interpolationMethod);
}
参数说明
- inputImage: 输入的图像(类型为
cv::Mat
)。 - outputImage: 输出调整大小后的图像(类型为
cv::Mat
)。通常需要提前创建这个矩阵。 - newSize: 新的大小,可以通过
cv::Size(width, height)
创建。也可以设置为(0, 0)
,这时将根据缩放因子计算新尺寸。 - fx 和 fy: 如果设置了这两个参数,它们指定在 x 和 y 方向上的缩放因子。如果同时指定了
newSize
,则将其忽略。 - interpolationMethod: 插值方法,用于确定如何生成新的像素值。常见的方法包括:
cv::INTER_NEAREST
: 最近邻插值cv::INTER_LINEAR
: 双线性插值(默认)cv::INTER_CUBIC
: 三次插值cv::INTER_LANCZOS4
: Lanczos 插值
示例代码
以下是一个完整示例,展示如何使用 resize
函数:
#include <opencv2/opencv.hpp>
#include <iostream>
int main() {
// 读取输入图像
cv::Mat inputImage = cv::imread("path/to/image.jpg");
if (inputImage.empty()) {
std::cerr << "Error loading image!" << std::endl;
return -1;
}
// 定义新尺寸
cv::Size newSize(200, 100); // 宽200,高100
// 创建输出图像矩阵
cv::Mat outputImage;
// 调整图像大小
cv::resize(inputImage, outputImage, newSize);
// 显示原始和调整后的图像
cv::imshow("Original Image", inputImage);
cv::imshow("Resized Image", outputImage);
cv::waitKey(0); // 等待键盘输入
return 0;
}
在这个例子中,我们首先加载一张图片,然后定义新的尺寸并调用 resize
方法来调整图片大小,最后显示原始图片和调整后的图片。
请确保已正确安装 OpenCV,并包含适当的头文件以便编译此代码。
内容由零声教学AI助手提供,问题来源于学员提问