【opencv】教程代码 —ImgProc (9) 图像金字塔

9. Pyramids.cpp

c2c3ab997c2e30eedace736abb450547.png

721970a2701c185f71faf07f49d22f5c.jpeg

c24a9b9f759d34a8f7af35ef63588363.png

/**
 * @file Pyramids.cpp
 * @brief 本样例代码展示了图像金字塔(pyrDown和pyrUp)的使用
 * @author OpenCV团队
 */


// 导入需要的头文件
#include "iostream"
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"


// 使用命名空间
using namespace std;
using namespace cv;


// 定义窗口名称
const char* window_name = "Pyramids Demo";


/**
 * @function main
 */
int main( int argc, char** argv )
{
    /// 通用提示
    cout << "\n Zoom In-Out demo \n "
            "------------------  \n"
            " * [i] -> 放大   \n"    // i代表放大
            " * [o] -> 缩小  \n"    // o代表缩小
            " * [ESC] -> 关闭程序 \n" << endl; // ESC退出程序


    //![load]
    // 定义图像文件名,如果命令行参数大于2则使用参数作为文件名,否则默认为 "chicky_512.png"
    const char* filename = argc >=2 ? argv[1] : "chicky_512.png";


    // 加载图像
    Mat src = imread( samples::findFile( filename ) );


    // 检查图像是否成功加载
    if(src.empty()){
        printf(" 打开图像出错\n");
        printf(" 程序参数: [image_name -- 默认 chicky_512.png] \n");
        return EXIT_FAILURE;  // 如果图像加载失败,则返回错误代码
    }
    //![load]


    //![loop]
    // 循环处理图像
    for(;;)
    {
        //![show_image]
        // 显示图像
        imshow( window_name, src );
        //![show_image]
        // 等待用户按键输入
        char c = (char)waitKey(0);


        // 如果用户按了ESC键,退出循环
        if( c == 27 )
        { break; }
        //![pyrup]
        // 如果用户按了'i',则放大图像
        else if( c == 'i' )
        { 
            pyrUp( src, src, Size( src.cols*2, src.rows*2 ) );
            printf( "** Zoom In: Image x 2 \n" );
        }
        //![pyrup]
        //![pyrdown]
        // 如果用户按了'o',则缩小图像
        else if( c == 'o' )
        { 
            pyrDown( src, src, Size( src.cols/2, src.rows/2 ) );
            printf( "** Zoom Out: Image / 2 \n" );
        }
        //![pyrdown]
    }
    //![loop]


    // 返回成功代码
    return EXIT_SUCCESS;
}

该代码是一个完整的图像处理应用程序,主要演示了如何通过OpenCV库中的图像金字塔函数(pyrUp, pyrDown)来放大和缩小图像。用户可以通过命令行参数传入需要处理的图片名称,并通过键盘输入'i'或'o'来实现图片的放大和缩小,从而直观地观察图像金字塔的处理效果。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值