ZBLOG

OpenCV 的 Mat 的 resize 方法

在 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),这时将根据缩放因子计算新尺寸。
  • fxfy: 如果设置了这两个参数,它们指定在 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助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=22435

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?