当前位置: 代码网 > it编程>编程语言>C/C++ > [C++] opencv - resize函数介绍和使用案例

[C++] opencv - resize函数介绍和使用案例

2024年08月06日 C/C++ 我要评论
本文介绍了opencv的resize函数和使用案例。

函数介绍

c++ opencv中的resize函数用于调整图像的大小。它可以根据指定的尺寸和插值方法对图像进行缩放。函数原型如下:

void cv::resize(inputarray src, outputarray dst, size size, double fx = 0, double fy = 0, int interpolation = inter_linear);

参数说明:

  • src:输入图像,通常为cv::mat类型。
  • dst:输出图像,与输入图像具有相同的类型。
  • size:目标图像的尺寸,表示为(width, height)
  • fx:沿水平轴的缩放因子,默认为0,表示不进行水平缩放。
  • fy:沿垂直轴的缩放因子,默认为0,表示不进行垂直缩放。
  • interpolation:插值方法,有以下几种可选:
    • cv::inter_nearest:最近邻插值,速度最快,但质量最差。
    • cv::inter_linear:线性插值,速度较快,质量较好。
    • cv::inter_area:区域插值,适用于图像缩小,速度较慢,质量最好。
    • cv::inter_cubic:三次样条插值,速度适中,质量较好。
    • cv::inter_lanczos4:lanczos插值,速度适中,质量较好。

使用案例

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main()
{
    // 读取原始图像
    mat src = imread("./3480e7ce_mk_tk_a_c2_6400_4480.png", imread_grayscale);
    if (src.empty())
    {
        cout << "无法读取图像" << endl;
        return -1;
    }
    imshow("src", src);
    waitkey(0);

    // 放大2倍
    mat dst;
    resize(src, dst, size(src.cols * 2, src.rows * 2), 0, 0, inter_linear);
    imshow("2x inter_linear", dst);
    waitkey(0);

    // 缩小2倍
    resize(src, dst, size(), 0.5, 0.5, inter_lanczos4);
    imshow("0.5x inter_lanczos4", dst);
    waitkey(0);

    return 0;
}

总结

c++ opencv中的resize函数是一个非常实用的图像处理函数,它可以帮助我们轻松地对图像进行缩放操作。通过调整插值方法,我们可以获得不同质量和速度的缩放结果。在实际应用中,resize函数可以与其他图像处理函数结合使用,完成各种复杂的图像处理任务。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com