1、内置函数resize:
void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )
InputArray src -原图像
OutputArray dst -输出图像
Size dsize -目标图像的大小
double fx=0 -在x轴上的缩放比例
double fy=0 -在y轴上的缩放比例
int interpolation -插值方式,有以下四种方式
INTER_NN -最近邻插值
INTER_LINEAR -双线性插值 (缺省使用)
INTER_AREA -使用象素关系重采样,当图像缩小时候, 该方法可以避免波纹出现。当图像放大时,类似于 INTER_NN 方法。
INTER_CUBIC -立方插值。
说明:dsize与fx和fy必须不能同时为零
2、c++代码:
#include<iostream>
#include"opencv2/imgproc/imgproc.hpp"
#include"opencv2/highgui/highgui.hpp"
#include<opencv2/core/core.hpp>
using namespace std;
using namespace cv;
/************************************************************************/
/*
OpenCV图像缩放使用的函数是:resize
void resize(InputArray src, OutputArray dst, Size dsize,
double fx=0, double fy=0, int interpolation=INTER_LINEAR )
参数含义:
InputArray src -原图像
OutputArray dst -输出图像
Size dsize -目标图像的大小
double fx=0 -在x轴上的缩放比例
double fy=0 -在y轴上的缩放比例
int interpolation -插值方式,有以下四种方式
INTER_NN -最近邻插值
INTER_LINEAR -双线性插值 (缺省使用)
INTER_AREA -使用象素关系重采样,当图像缩小时候,
该方法可以避免波纹出现。当图像放大时,类似于 INTER_NN 方法。
INTER_CUBIC -立方插值。
说明:dsize与fx和fy必须不能同时为零
*/
/************************************************************************/
int main()
{
//用mat读取
Mat src = imread("G:\\Projects\\09CPP\\02Data\\image\\0.jpg");
if (src.empty()){
cout << "文件读取失败!" << endl;
system("pause");
return -1;
}
imshow("src", src);//原图像显示
Mat res;
resize(src, res, Size(src.cols / 2, src.rows / 2), 0, 0, INTER_LINEAR);// X Y各缩小一半
imshow("res", res);//显示缩放过后的结果
waitKey(0);
return 0;
}
3、python代码:
#!/usr/bin/env python
# -*- coding : utf-8 -*-
# @Time : 2020/6/29 16:03
# @Author : Zhang Shanxiu
import cv2
def main():
src = cv2.imread('../image/0.jpg')
h, w, c = src.shape
res = cv2.resize(src, (int(w / 2), int(h / 2)))
cv2.imshow('src', src)
cv2.imshow('res', res)
cv2.waitKey(0)
cv2.destroyAllWindows()
if __name__ == '__main__':
main()
4、效果图: