項目功能實現:對一張圖像進行放大和縮小操作
按照之前的博文結構來,這里就不在贅述了
一、頭文件
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;
}
項目結構如下:
運行結果如下: