项目功能实现:对一张图像进行放大和缩小操作
按照之前的博文结构来,这里就不在赘述了
一、头文件
resizing.h
#pragma once
#include<opencv2/opencv.hpp>
using namespace cv;
class RESIZING {
public:
void resizing(Mat& image);
};
#pragma once
二、函数实现
resizing.cpp
OpenCV官网API
resize(image, zoomin, Size(w / 2, h / 2), 0, 0, INTER_LINEAR);
参数一:要处理的图像对象为image
参数二:处理的结果返回给zoomin
参数三:要变成的尺寸大小(w,h)
参数四:x方向上缩放比例
参数五:y方向上缩放比例
参数六:缩放所采用的插值方式,官网给出的采用的插值方式传送门
缩小图片优先考虑:INTER_AREA
放大图片优先考虑:INTER_CUBIC
(效果最好,但较慢)、 INTER_LINEAR
(速度快,但效果还可以接受)。
#include"resizing.h"
#include<iostream>
#include<opencv2/opencv.hpp>
void RESIZING::resizing(Mat& image) {
Mat zoomin, zoomax;
int h, w;
h = image.rows;
w = image.cols;
resize(image, zoomin, Size(w / 2, h / 2), 0, 0, INTER_AREA);
imshow("zoomin", zoomin);
resize(image, zoomax, Size(w * 2, h * 2), 0, 0, INTER_CUBIC);
imshow("zoomax", zoomax);
}
三、主函数
yy_main.cpp
#include <opencv2/opencv.hpp>
#include <iostream>
#include "resizing.h"
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat src = cv::imread("E:/C++_workspace/beyond.jpg", IMREAD_COLOR);
if (src.empty()) {
printf("load image is false...\n");
return -1;
}
namedWindow("yanyu", WINDOW_FREERATIO);
imshow("yanyu", src);
RESIZING yy;
yy.resizing(src);
waitKey(0);
destroyAllWindows();
return 0;
}
项目结构如下:
运行结果如下: