//! interpolation algorithm
enum InterpolationFlags{
/** nearest neighbor interpolation */
INTER_NEAREST = 0,
/** bilinear interpolation */
INTER_LINEAR = 1,
/** bicubic interpolation */
INTER_CUBIC = 2,
/** resampling using pixel area relation. It may be a preferred method for image decimation, as
it gives moire'-free results. But when the image is zoomed, it is similar to the INTER_NEAREST
method. */
INTER_AREA = 3,
/** Lanczos interpolation over 8x8 neighborhood */
INTER_LANCZOS4 = 4,
/** Bit exact bilinear interpolation */
INTER_LINEAR_EXACT = 5,
/** mask for interpolation codes */
INTER_MAX = 7,
/** flag, fills all of the destination image pixels. If some of them correspond to outliers in the
source image, they are set to zero */
WARP_FILL_OUTLIERS = 8,
/** flag, inverse transformation
For example, #linearPolar or #logPolar transforms:
- flag is __not__ set: dst(ho , hi) = src(x,y)
- flag is set: dst(x,y) = src(ho, hi)
*/
WARP_INVERSE_MAP = 16
};
三、示例代碼:
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat src = imread("../images/test_small.png");
if (src.empty()) {
printf("不能加載圖像!\n");
return -1;
}
imshow("1--原圖", src);
int h = src.rows;
int w = src.cols;
float fx = 0.0, fy = 0.0;
Mat dst = Mat::zeros(src.size(), src.type());
resize(src, dst, Size(w * 2, h * 2), fx = 0, fy = 0, INTER_NEAREST);
imshow("2--插值(INTER_NEAREST)", dst);
resize(src, dst, Size(w * 2, h * 2), fx = 0, fy = 0, INTER_LINEAR);
imshow("3--插值(INTER_LINEAR)", dst);
resize(src, dst, Size(w * 2, h * 2), fx = 0, fy = 0, INTER_CUBIC);
imshow("4--插值(INTER_CUBIC)", dst);
resize(src, dst, Size(w * 2, h * 2), fx = 0, fy = 0, INTER_LANCZOS4);
imshow("5--插值(INTER_LANCZOS4)", dst);
waitKey(0);
return 0;
}