手撕OpenCV源码之resize<INTER_AREA>
resize在modules/imgproc/src/文件件中,首先看resize API的函数实现:
void resize(InputArray src, OutputArray dst,
Size dsize, double fx=0, double fy=0,
int interpolation=INTER_LINEAR )
参数说明:
-
src:输入图像
-
dst:输出图像,dst的数据类型与src相同.
-
dsize:这个参数是输出图像的尺寸,两种情况,如果该参数设置为0,api会自动计算
输出参数,否则按照输入尺寸.dst的计算公式:
d s i z e = S i z e ( r o u n d ( f x × s r c . c o l s ) , r o u n d ( f y × s r c . r o w s ) ) dsize = Size(round(fx×src.cols),round(fy×src.rows)) dsize=Size(round(fx×src.cols),round(fy×src.rows))
所以当dsize为0的时候,fx和fy不能为0. -
fx:
( d o u b l e ) d s i z e . w i d t h /