图像金字塔综合实列

本文介绍了一个使用OpenCV库实现图像金字塔与图片尺寸缩放的C++程序。通过按键操作,用户可以实时调整图像大小,包括放大和缩小,利用pyrUp、pyrDown和resize函数。该程序为图像处理和计算机视觉应用提供了实用的尺寸调整方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;

//************************************
//		    图像金字塔与图片尺寸缩放
//************************************


#define WINDOW_NAME "【程序窗口】"
Mat g_srcImage, g_dstImage, g_tmpImage;

int main()
{
	g_srcImage = imread("C:/Users/hasee-pc/Desktop/girl.jpg");
	if (!g_srcImage.data)
	{
		cout << "error in srcimage" << endl;
		return false;
	}

	namedWindow(WINDOW_NAME, WINDOW_AUTOSIZE);
	imshow(WINDOW_NAME, g_srcImage);

	
	g_tmpImage = g_srcImage;
	g_dstImage = g_tmpImage;
	

	int key = 0;

	while (1)
	{
		key = waitKey(9);

		switch (key)
		{
		case 27://esc
			return 0;
			break;
		case 'q':
			return 0;
			break;
		case 'a':
			pyrUp(g_tmpImage, g_dstImage, Size(g_tmpImage.cols * 2, g_tmpImage.rows * 2));
			printf(">系统检测到按键【A】被按下,开始基于【pryUP】函数的图片放大:图片尺寸*2\n");
			break;
		case 'w':
			resize(g_tmpImage, g_dstImage, Size(g_tmpImage.cols * 2, g_tmpImage.rows * 2));
			printf(">系统检测到按键【w】被按下,开始基于【resize】函数的图片放大,图片尺寸*2\n");
			break;
		case '1':
			resize(g_tmpImage, g_dstImage, Size(g_tmpImage.cols * 2, g_tmpImage.rows * 2));
			printf(">系统监测到按键【1】被按下,开始基于【resize】函数的图片放大,图片尺寸*2\n");
			break;
		case '3':
			pyrUp(g_tmpImage, g_dstImage, Size(g_tmpImage.cols * 2, g_tmpImage.rows * 2));
			printf(">系统监测到按键【3】被按下,开始基于【pyrUp】函数的图片放大,图片尺寸*2\n");
			break;

		case 'd':
			pyrDown(g_tmpImage, g_dstImage, Size(g_tmpImage.cols / 2, g_tmpImage.rows / 2));
			printf(">系统检测按键【D】被按下,开始基于【pyrDown】函数的图片缩放,图片尺寸/2\n");
			break;
		case 's':
			resize(g_tmpImage, g_dstImage, Size(g_tmpImage.cols / 2, g_tmpImage.rows / 2));
			printf(">系统检测到按键【S】被按下,开始基于【resize】的图片缩放,图片尺寸/2\n");
			break;
		case '2':
			resize(g_tmpImage, g_dstImage, Size(g_tmpImage.cols / 2, g_tmpImage.rows / 2), (0, 0), (0, 0), 2);
			printf(">系统检测到按键【2】被按下,开始基于【pyrDown】的图片缩放,图片尺寸/2\n");
			break;
		case '4':
			pyrDown(g_tmpImage, g_dstImage, Size(g_tmpImage.cols / 2, g_tmpImage.rows / 2));
			printf(">系统检测到按键【4】被按下,开始基于【pyrDown】的图片缩放,图片尺寸/2\n");
			break;
		
		}
		imshow(WINDOW_NAME, g_dstImage);
		g_tmpImage = g_dstImage;
	}
		
	
	

	waitKey(0);


}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值