1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Opencv——图像金字塔与图像尺寸缩放

Opencv——图像金字塔与图像尺寸缩放

时间:2023-02-21 11:11:27

相关推荐

Opencv——图像金字塔与图像尺寸缩放

主要讲解

1、resize()函数调用

函数定义:

调用方式:

resize(srcImage, dstImage, Size(64, 128)); //对图片进行修改resize(srcImage, dstImage, Size(), 0.5, 0.5);

第6个参数的含义:

INTER_NEAREST:最邻近插值(放大好用)INTER_AREA:区域插值(利用像素区域关系的重采样插值)(缩小好用)INTER_CUBIC:三次样条插值(超过4x4像素邻域内的双三次插值)INTER_LANCZOS4:Lanczos插值(超过8x8像素邻域的Lanczos插值)

效果展示

将图像用4种方法先缩小6倍再放大6倍得到的效果:

代码展示

#include <opencv2/opencv.hpp>#include <iostream>#include "windows.h"#include <stdio.h>#include "My_ImageProssing_base.h"using namespace cv;using namespace std;/************修改图片大小示例**********************/int main(){Mat srcImage = imread("D:\\opencv_picture_test\\趣图景图\\test12.jpg");//打开原图Mat dstImage1, dstImage2, dstImage3, dstImage4;//目标图Mat tmpImage = srcImage.clone();//深复制imshow("未矫正过的图像", srcImage);//显示未矫正的原图//由于指定缩放的比例,Size()直接给,后面就分别是x、y方向的缩放比例resize(tmpImage, dstImage1, Size(), 0.5, 0.5, INTER_NEAREST);resize(tmpImage, dstImage2, Size(), 0.5, 0.5, INTER_AREA);resize(tmpImage, dstImage3, Size(), 0.5, 0.5, INTER_CUBIC);resize(tmpImage, dstImage4, Size(), 0.5, 0.5, INTER_LANCZOS4);for (int i = 0;i < 5;i++){resize(dstImage1,dstImage1, Size(), 0.5, 0.5, INTER_NEAREST);resize(dstImage2, dstImage2, Size(), 0.5, 0.5, INTER_AREA);resize(dstImage3, dstImage3, Size(), 0.5, 0.5, INTER_CUBIC);resize(dstImage4, dstImage4, Size(), 0.5, 0.5, INTER_LANCZOS4);}for (int i = 0;i < 5;i++){resize(dstImage1, dstImage1, Size(), 2, 2, INTER_NEAREST);resize(dstImage2, dstImage2, Size(), 2, 2, INTER_AREA);resize(dstImage3, dstImage3, Size(), 2, 2, INTER_CUBIC);resize(dstImage4, dstImage4, Size(), 2, 2, INTER_LANCZOS4);}resize(dstImage1, dstImage1, Size(), 2, 2, INTER_NEAREST);resize(dstImage2, dstImage2, Size(), 2, 2, INTER_AREA);resize(dstImage3, dstImage3, Size(), 2, 2, INTER_CUBIC);resize(dstImage4, dstImage4, Size(), 2, 2, INTER_LANCZOS4);//resize(srcImage, dstImage, Size(64, 128)); //对图片进行修改//resize(input,output,dSize( , ),fx,fy,插值方式);//INTER_NEAREST:最邻近插值(放大好用)//INTER_AREA:区域插值(利用像素区域关系的重采样插值)(缩小好用)//INTER_CUBIC:三次样条插值(超过4x4像素邻域内的双三次插值)//INTER_LANCZOS4:Lanczos插值(超过8x8像素邻域的Lanczos插值)imshow("最邻近插值", dstImage1);imshow("区域插值", dstImage2);imshow("三次样条插值", dstImage3);imshow("Lanczos插值", dstImage4);waitKey(0);return 0;}

2、pyrUp()、pyrDown()函数调用

pyrUp()(放大)

函数定义:

第4个参数不用管它。

调用方式:

pyrUp(srcImage,dstImage, Size(srcImage.cols * 2, srcImage.rows * 2));

pyrDown()(缩小)

函数定义:

第4个参数不用管它。

调用方式:

pyrDown(srcImage,dstImage, Size(srcImage.cols / 2, srcImage.rows / 2));

原理讲解

1、高斯金字塔

在缩放的过程中难免会造成信息的丢失,为了弥补信息的丢失,产生了拉普拉斯金字塔

2、拉普拉斯金字塔

(G:Gauss L:Laplace)

运算过程图解:

离散化的5*5高斯内核:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。