【17】图像插值的几种形式(待补充)
#include<opencv2/opencv.hpp> #include<iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat src = imread("0001.jpg"); if (src.empty()) { printf("could not load image...\n"); return -1; } imshow("input", 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("INTER_NEAREST", dst); resize(src, dst, Size(w * 2, h * 2), fx = 0, fy = 0, INTER_LINEAR); imshow("INTER_LINEAR", dst); resize(src, dst, Size(w * 2, h * 2), fx = 0, fy = 0, INTER_CUBIC); imshow("INTER_CUBIC", dst); resize(src, dst, Size(w * 2, h * 2), fx = 0, fy = 0, INTER_LANCZOS4); imshow("INTER_LANCZOS4", dst); waitKey(0); return 0; }
关于图像插值的API:
void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR)
。src 输入图 。dst 输出图,形态和输入图相同,当dsize不等于0,输出图尺寸会和dsize相同,当dsize等于0,输出图尺寸会由输入图尺寸、fx、fy计算而得 。dsize 输出尺寸,当输入为0时,fx、fy皆不可为0,dsize = Size(round(fxsrc.cols),round(fysrc.rows)) 。fx 水平缩放比例,当输入为0时,fx=(double)dsize.width/src.cols 。fy 垂直缩放比例,当输入为0时,fy=(double)dsize.height/src.rows 。interpolation 内插方式 内插方式有 a). CV_INTER_NEAREST 最邻近插值点法 b). CV_INTER_LINEAR 双线性插值法 c).CV_INTER_AREA 邻域像素再取样插补 d).CV_INTER_CUBIC 双立方插补,4*4大小的补点 原文链接:https://blog.csdn.net/weixin_41424481/article/details/96975616
关于四种插值方法的分析:
(1)最邻近插值点法,缺点是产生的锯齿多,不够细致。

(2)双线性插值法


(3)双三次插值




https://blog.csdn.net/jia20003/article/details/40020775


浙公网安备 33010602011771号