您的位置:首页 > 运维架构

OpenCV中resize()函数使用

2017-08-27 10:25 316 查看
cmakelists:

cmake_minimum_required(VERSION 3.7)
project(size_function)

set(CMAKE_CXX_STANDARD 11)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_DIRS})

set(SOURCE_FILES main.cpp)
add_executable(size_function ${SOURCE_FILES})
target_link_libraries(size_function ${OpenCV_LIBS})


程序:

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace std;
using namespace cv;

int main()
{
//读入原始图
Mat src_image = imread("ubuntu.png");
//定义中间变量和要缩小和放大的两张图
Mat tmp_image, dst_image1, dst_image2, dst_image3, dst_image4;

//定义一个中间变量,转接一下
tmp_image = src_image;

//显示原始图
imshow("原始图像", src_image);

//这里看一函数定义:
//前两个参数:原图,输出图。没什么好说的
//第三四五个参数是选取使用的,主要就是规定缩放的倍数,
//dsize相当于直接规定了缩放后要得到的大小,这个要是设置了,后面的fx fy有默认值,是不需要设置的
//fx fy是跟dsize并行的缩放信息,就是在dsize为0的时候,这两个值必须设置,表x y方向的缩放倍率
//最后一个为插值方式,这里默认的是线性插值,还有许多插值方式,各有特点
/*CV_EXPORTS_W void resize( InputArray src, OutputArray dst,
Size dsize, double fx = 0, double fy = 0,
int interpolation = INTER_LINEAR );
*/

//方式一:直接定义输出的大小,后面的参数都为默认值
resize(tmp_image, dst_image1, Size(tmp_image.cols/2, tmp_image.rows/2));
resize(tmp_image, dst_image2, Size(tmp_image.cols*2, tmp_image.rows*2));

//方式二:dsize设为默认,通过设置后面fx fy实现缩放
resize(tmp_image, dst_image3, Size(), 0.5, 0.5);
resize(tmp_image, dst_image4, Size(), 2, 2);

imshow("Size缩小", dst_image1);
imshow("Size放大", dst_image2);
imshow("fx fy缩小", dst_image3);
imshow("fx fy放大", dst_image4);

//waitKey(0)貌似只需要写在return之前......
waitKey(0);

return 0;
}


运行结果看两种缩放方式效果一样
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: