Opencv(C++)笔记--图像的resize方法

这篇具有很好参考价值的文章主要介绍了Opencv(C++)笔记--图像的resize方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1--近邻算法代码

#include <opencv2/opencv.hpp>
#include <cstdio>
 
// 近邻算法
void xresize(const cv::Mat &src, cv::Mat &des, cv::Size size){
    des.create(size, src.type());
    // 映射的原图坐标
    int sx, sy = 0;
    // 比例
    float fx = (float)src.cols / des.cols;
    float fy = (float)src.rows / des.rows;
    for(int x = 0; x < des.cols; x++){
        sx = fx * x + 0.5; // x为目标图的坐标
        for(int y = 0; y < des.rows; y++){
            sy = fy * y + 0.5; // y目标图的坐标
            des.at<cv::Vec3b>(y, x) = src.at<cv::Vec3b>(sy, sx);
        }
    }
}

int main(int argc, char *argv[]){
    cv::Mat src = cv::imread("../test1.jpg");
    cv::Mat img256;
    cv::Mat des256;
    
    // 自定义函数
    xresize(src, img256, cv::Size(256, 256));
    // OpenCV自定义函数, 后两个0表示fx,fy,当Size为None时使用fx,fx进行resize
    cv::resize(src, des256, cv::Size(256, 256), 0, 0, cv::INTER_NEAREST);

    cv::imshow("src", src);
    cv::imshow("img256", img256);
    cv::imshow("des256", des256);
    cv::waitKey(0);
 
    return 0;
}

2--近邻算法结果

c++ opencv resize,Opencv(C++)学习笔记,opencv,计算机视觉,人工智能

3--双线性插值算法代码

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

int main(int argc, char *argv[]){
    cv::Mat src = cv::imread("../test1.jpg");
    cv::Mat img1024;
    cv::Mat des1024;

    cv::resize(src, img1024, cv::Size(1024, 1024), 0, 0, cv::INTER_NEAREST); // 近邻
    cv::resize(src, des1024, cv::Size(1024, 1024), 0, 0, cv::INTER_LINEAR);  // 双线性插值

    imshow("src", src);
    imshow("img1024", img1024);
    imshow("des1024", des1024);
    cv::waitKey(0);    

    return 0;
}

4--双线性插值算法结果

c++ opencv resize,Opencv(C++)学习笔记,opencv,计算机视觉,人工智能

原理分析:双线性插值实质上是使用两次单线性插值操作进行数据的处理,原理如下(字丑莫怪)(参考):

c++ opencv resize,Opencv(C++)学习笔记,opencv,计算机视觉,人工智能

结果分析:双线性插值的结果更平滑,分析原理可知利用邻近的四个像素点进行处理,类似一个滤波的操作

5--图像金字塔

①高斯金字塔:用于向下采样;

②拉普拉斯金字塔:用来从金字塔底层图像重建上层未采样图像;

③原理:参考

代码:

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

int main(int argc, char *argv[]){
    cv::Mat src = cv::imread("../test1.jpg");
    cv::Mat gsrc;
    cv::Mat lsrc;
    cv::pyrDown(src, gsrc);
    cv::pyrUp(src, lsrc);

    cv::imshow("src", src);
    cv::imshow("gsrc", gsrc);
    cv::imshow("lsrc", lsrc);
    cv::waitKey(0);

    return 0;
}

结果:

c++ opencv resize,Opencv(C++)学习笔记,opencv,计算机视觉,人工智能文章来源地址https://www.toymoban.com/news/detail-525575.html

到了这里,关于Opencv(C++)笔记--图像的resize方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 初学opencv c++学习笔记(二)图像空间色彩转换cvtColor()

    对图像的色彩转换用到cvtColor()函数,本章将对此其用法进行解析。 目录 一、色彩空间转换 官方定义  函数参数解释 代码演示 RGB——HSV  RGB——GRAY  BGR——RGB 总结 提示:以下是本篇文章正文内容,下面案例可供参考 APL:cvtColor() 1. src (source):输入的源图像。为矩阵形式。

    2024年02月05日
    浏览(49)
  • 【计算机视觉—python 】 图像处理入门教程 —— 图像属性、像素编辑、创建与复制、裁剪与拼接【 openCV 学习笔记 005 to 010 and 255】

    OpenCV中读取图像文件后的数据结构符合Numpy的ndarray多维数组结构,因此 ndarray 数组的属性和操作方法可用于图像处理的一些操作。数据结构如下图所示: img.ndim:查看代表图像的维度。彩色图像的维数为3,灰度图像的维度为2。 img.shape:查看图像的形状,代表矩阵的行数(高

    2024年01月19日
    浏览(70)
  • 数字图像处理第三章 学习笔记附部分例子代码(C++ & opencv)

    本系列博客参考书为, 数字图像处理第三版-冈萨雷斯 第三版教材中图片下载地址: book images downloads vs2019配置opencv可以查看:VS2019 Opencv4.5.4配置教程 后续剧情: 数字图像处理 第四章 频率域滤波 学习笔记 数字图像处理 第六章 彩色图像处理 学习笔记 数字图像处理 第七章 小

    2024年02月03日
    浏览(83)
  • opencv图像放缩与插值-resize函数

    在OpenCV中,resize函数用于对图像进行尺寸调整(放大或缩小),这个过程中通常需要用到插值方法来计算新尺寸下图像像素的值。插值方法对于放缩的质量有着直接影响。 src:输入图像。 dst:输出图像。尺寸由dsize指定,或者通过fx和fy与源图像的相对关系确定。 dsize:输出

    2024年02月22日
    浏览(46)
  • OpenCV: 图像缩放(cv2.resize)【一分钟弄清楚】

    OpenCV: 图像缩放(cv2.resize)【一分钟弄清楚】 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 👈 希望得到您的订阅和支持~ 💡 创作高质量博文,分享更多关于深度学习、PyTorch、Python领域的优质

    2024年04月16日
    浏览(44)
  • python-opencv resize() (讲解+批量改变图像大小示例)

    python-opencv resize()的使用(讲解+批量改变图像大小示例) 定义: 或者也可以: 要注意 :dsize和fx/fy不能同时为0, 要么 一、指定dsize的值,让fx和fy直接省略或置0,比如 resize(img, imgDst, (512,512)); 如果fx是0,它按照(double)dsize.width/src.cols来计算; 如果fy是0,它按照(double)dsi

    2024年02月14日
    浏览(38)
  • opencv-22 图像几何变换01-缩放-cv2.resize()(图像增强,图像变形,图像拼接)

    几何变换是计算机图形学中的一种图像处理技术,用于对图像进行空间上的变换,而不改变图像的内容。这些变换可以通过对图像中的像素位置进行调整来实现。 常见的几何变换包括: 平移(Translation) :将图像在水平和/或垂直方向上进行平移,即将图像的每个像素沿着指

    2024年02月15日
    浏览(45)
  • 深度学习图像风格迁移 - opencv python 计算机竞赛

    🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习图像风格迁移 - opencv python 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/danche

    2024年02月04日
    浏览(58)
  • 【精选】使用opencv的resize函数进行等比例放大或缩小图像

    在 OpenCV 中,使用 resize() 函数可以对图像进行缩放操作。若要按比例扩大或缩小图像,可以通过指定目标大小,并结合原始图像的尺寸进行等比例扩大。 以下是一个示例代码,展示了如何在 Python 中使用 OpenCV 对图像进行等比例扩大: 这段代码首先读取原始图像,然后获取其

    2024年02月03日
    浏览(40)
  • 计算机竞赛 opencv python 深度学习垃圾图像分类系统

    🔥 优质竞赛项目系列,今天要分享的是 🚩 opencv python 深度学习垃圾分类系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 这是一个较为新颖的竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/p

    2024年02月13日
    浏览(80)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包