极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11591|回复: 1

opencv2.4改变图像的大小

[复制链接]
发表于 2012-8-5 23:50:41 | 显示全部楼层 |阅读模式
我的博客:http://www.zwmin.com
你可以指定插值方法来改变图像的大小。
  • INTER_NEAREST 最近插值
  • INTER_LINEAR 双线性插值(默认使用情况)
  • INTER_AREA 使用像素区域面积重采样,这是一个图像抽取的首选方法,因为他是moire’-free的结果。但是,当放大图像类似操作最好是INTER_NEAREST最近插值法好。
  • INTER_CUBIC 4×4  超过4×4的像素附近的两次立方插值
  • INTER_LANCZOS4 8×8 超过8×8像素附近的Lanczos插值

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
int
main(int argc, char *argv[])
{
  cv::Mat src_img = cv::imread("../../image/lenna.png", 1);
  if(src_img.empty()) return -1;
  cv::Mat dst_img1;
  cv::Mat dst_img2(src_img.rows*0.5, src_img.cols*2.0, src_img.type());
  // INTER_LINER(最近插值)改变大小
  cv::resize(src_img, dst_img1, cv::Size(), 0.5, 0.5);
  // INTER_CUBIC(两次立方插值)改变大小
  cv::resize(src_img, dst_img2, dst_img2.size(), cv::INTER_CUBIC);
  cv::namedWindow("resize image1", CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);
  cv::namedWindow("resize image2", CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);
  cv::imshow("resize image1", dst_img1);
  cv::imshow("resize image2", dst_img2);
  cv::waitKey(0);
}



C++: void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )
src – 源图像.
dst – 目标图像大小。
fx – 沿着横轴换算因子。当它是0,他计算为 wpid-ae6a0ac215a975dff8ec061255159686_7ec52afa20807f7e640395d29f9a3a55d111aaac1.png
fy – 沿着纵轴换算因子。当它是0,他计算为 wpid-ae6a0ac215a975dff8ec061255159686_d36ca0ad3e2c78f8c0f5c8c8bc6f368c87659c261.png
interpolation – 插值方法。INTER_NEAREST INTER_LINEAR INTER_AREA INTER_CUBIC INTER_LANCZOS4

如果你需要使用dst的大小输出,可以这样
resize(src, dst, dst.size(), 0, 0, interpolation);

如果要使用源图像大小缩放,可以这样
resize(src, dst, Size(), 0.5, 0.5, interpolation);

要缩小图像,一般最好是INTER_AREA重采样插值法。而放大图像,他通常最好是CV_INTER_CUBIC(慢)或CV_INTER_LINEAR(更快,但仍然看起来不错)


输入画像:
wpid-ae6a0ac215a975dff8ec061255159686_lenna1.png
运行結果(纵横0.5倍,纵0.5倍+横2.0倍):

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2020-9-23 18:40 , Processed in 0.049026 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表