opencv resize函数 最大可扩展多少尺寸

1748人阅读
opencv(7)
resize和图像金字塔(pydown、pyup)都可以改变图像的大小。具体操作和区别如下:
C++: void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )
Python: cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
dst:目标图
dsize :dst图的size,当为零时,按照dsize = Size(round(fx*src.cols), round(fy*src.rows))计算
fx:水平方向的比例。当为零,按照{(double)dsize.width/src.cols}计算
fy:垂直方向的比例。当为零,按照{(double)dsize.height/src.rows}计算
interpolation:插值方式。INTER_NEAREST、INTER_LINEAR、INTER_AREA 、INTER_CUBIC、INTER_LANCZOS4
其中,dsize和fx,fy不能同时为零。resize可以用于生成任意尺寸大小。常用于归一化。
图像金字塔
C++: void pyrDown(InputArray src, OutputArray dst, const Size& dstsize=Size())
Python: cv2.pyrDown(src[, dst[, dstsize]]) → dst
使用pyrDown,先经过5*5的高斯滤波,输出图像宽度和高度应是输入图像的一半
C++: void pyrUp(InputArray src, OutputArray dst, const Size& dstsize=Size())
Python: cv2.pyrUp(src[, dst[, dstsize]]) → dst
使用pyrUp输出图像宽度和高度应是输入图像的2倍
图像金字塔输出图像长宽比基本不变
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:35142次
排名:千里之外
原创:23篇
评论:25条
(1)(1)(3)(4)(7)(1)(1)(3)(2)(8)(1)Ubuntu OpenCV中使用cvResize函数或resize函数进行图象放缩
//cvResize函数原型
void cvResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR ); &
src:输入图像.(IplImage)
dst:输出图像.(IplImage)
interpolation:差值方法:&
CV_INTER_NN - 最近邻差值
CV_INTER_LINEAR - 双线性差值 (缺省使用)
CV_INTER_AREA - 使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于 &CV_INTER_NN &方法
CV_INTER_CUBIC - 立方差值
函数cvResize 将图像 &src 改变尺寸得到与 &dst 同样大小。若设定ROI,函数将按常规支持 ROI.
使用C++编程时使用resize函数进行图像缩放。
//resize函原型
CV_EXPORTS_W void resize( InputArray src, OutputArray dst, &
Size dsize, double fx=0, double fy=0, &
int interpolation=INTER_LINEAR ); &
注:dsize与(fx,fy)不能同时为0。
示例程序:
使用ubuntu14.04+OpenCV 3.1.0
/**------------------------------------------------------------------**/
/**描述:包含程序所依赖的头文件**/
/**------------------------------------------------------------------**/
#include &opencv2/opencv.hpp&
#include &opencv2/highgui/highgui.hpp&
#include &opencv2/imgproc/imgproc.hpp&
#include &string&
/**------------------------------------------------------------------**/
/**描述:程序所用的命名空间**/
/**------------------------------------------------------------------**/
/**------------------------------------------------------------------**/
/**描述:系统全局常量**/
/**------------------------------------------------------------------**/
//目标图片的文件名,需要放置在工程目录下
const string TagrImg = &Angelababy.jpeg&;
//定义窗口标题
const char SrcWinNa[] = &SrcWindow&;
const char GryWinNa[] = &GryWindow&;
const char ResWinNa[] = &ResWindow&;
/**------------------------------------------------------------------**/
/**描述:系统全局变量**/
/**------------------------------------------------------------------**/
//放缩倍数
double scale=0.4;
int main(int argc, char **argv)
/**原图像的读取及显示-----------------------------------------------**/
//读取图片
Mat SrcImg = imread(TagrImg);
//检查是否读取成功
if(!SrcImg.data)
cout&&&读取失败,程序流产&&&
cout&&&请检查工程目录下是否存在&&&TagrImg&&
return -1;
//创建窗口显示原图像
cvNamedWindow(SrcWinNa, CV_WINDOW_AUTOSIZE);
imshow(SrcWinNa, SrcImg);
/**图片缩放及显示--------------------------------------------------**/
//设置缩放后的图片的尺寸
Size ResImgSiz = Size(SrcImg.cols*scale, SrcImg.rows*scale);
Mat ResImg = Mat(ResImgSiz, SrcImg.type());
resize(SrcImg, ResImg, ResImgSiz, CV_INTER_CUBIC);
//创建窗口用于显示缩放后的图像
cvNamedWindow(ResWinNa, CV_WINDOW_AUTOSIZE);
imshow(ResWinNa, ResImg);
cvWaitKey(0);
将图片缩小到0.5倍的效果图:
本文永久更新地址:
------分隔线----------------------------Opencv尺寸调整-resize函数
Opencv尺寸调整-resize函数
opencv学习之路
#include&iostream&
#include&opencv2/opencv.hpp&
int g_nCurrRowsSize = 0, g_nCurrColsSize = 0;
int main()
Mat srcImage = imread(&牛吃草.jpg&);
imshow(&【原图】&, srcImage);
/*Mat dstI
resize(srcImage, dstImage, Size(50, 50), 0, 0, 3);
imshow(&【处理后的图片】&, dstImage);
waitKey(0);*/
Mat midImage, dstI
srcImage.copyTo(midImage);
g_nCurrRowsSize = srcImage.
g_nCurrColsSize = srcImage.
namedWindow(&【滚动条】&);
createTrackbar(&rows&, &【滚动条】&, &g_nCurrRowsSize, srcImage.rows * 2, 0);
createTrackbar(&cols&, &【滚动条】&, &g_nCurrColsSize, srcImage.cols * 2, 0);
resize(srcImage, dstImage, Size(g_nCurrColsSize, g_nCurrRowsSize), 0, 0, 3);
imshow(&【变换尺寸】&, dstImage);
key = waitKey(10);
switch (key)
//如果检测到键盘值为 'a' 则恢复原图
case 'a':
midImage.copyTo(dstImage);
g_nCurrColsSize = srcImage.
g_nCurrRowsSize = srcImage.
我的热门文章
即使是一小步也想与你分享24569人阅读
OpenCV(221)
图像大小变换void cvResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR );src:输入图像. dst:输出图像. interpolation:差值方法: o CV_INTER_NN - 最近邻差值, o CV_INTER_LINEAR -& 双线性差值 (缺省使用) o CV_INTER_AREA -& 使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于& CV_INTER_NN& 方法.. o CV_INTER_CUBIC -& 立方差值. 函数& cvResize 将图像& src 改变尺寸得到与& dst 同样大小。若设定ROI,函数将按常规支持 ROI.&实例代码:#include &stdio.h&
#include &cv.h&
#include &cxcore.h&
#include &highgui.h&
#pragma comment(lib, &cv.lib&)
#pragma comment(lib, &cxcore.lib&)
#pragma comment(lib, &highgui.lib&)
int main(int argc,char **argv)
IplImage *src = cvLoadImage(&test.png&);
IplImage *
double scale = 0.5;
sz.width = src-&width*
sz.height = src-&height*
desc = cvCreateImage(sz,src-&depth,src-&nChannels);
cvResize(src,desc,CV_INTER_CUBIC);
cvNamedWindow(&src&,CV_WINDOW_AUTOSIZE);
cvNamedWindow(&desc&,CV_WINDOW_AUTOSIZE);
cvShowImage(&src&,src);
cvShowImage(&desc&,desc);
cvWaitKey(0);
cvReleaseImage(&src);
cvReleaseImage(&desc);
cvDestroyWindow(&src&);
cvDestroyWindow(&desc&);
return -1;
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:8209878次
积分:93923
积分:93923
排名:第8名
原创:1130篇
转载:2963篇
评论:1344条
(4)(10)(2)(3)(13)(13)(4)(9)(62)(16)(8)(23)(9)(37)(73)(34)(31)(120)(128)(183)(23)(69)(75)(1)(171)(33)(148)(168)(145)(27)(144)(139)(208)(61)(59)(10)(10)(32)(2)(7)(34)(24)(9)(39)(25)(32)(46)(20)(44)(8)(21)(43)(49)(100)(113)(136)(35)(55)(15)(29)(41)(15)(50)(17)(20)(182)(206)(43)(27)(19)(17)(13)(1)(40)(5)(3)(4)(21)(71)(73)(19)(2)(2)(1)(1)(1)(6)(3)

我要回帖

更多关于 opencv resize 参数 的文章

 

随机推荐