//! interpolation algorithm
enum
{
INTER_NEAREST=CV_INTER_NN, //!< nearest neighbor interpolation
INTER_LINEAR=CV_INTER_LINEAR, //!< bilinear interpolation
INTER_CUBIC=CV_INTER_CUBIC, //!< bicubic interpolation
INTER_AREA=CV_INTER_AREA, //!< area-based (or super) interpolation
INTER_LANCZOS4=CV_INTER_LANCZOS4, //!< Lanczos interpolation over 8x8 neighborhood
INTER_MAX=7,
WARP_INVERSE_MAP=CV_WARP_INVERSE_MAP
};
//! resizes the image
CV_EXPORTS_W void resize( InputArray src, OutputArray dst,
Size dsize, double fx=0, double fy=0,
int interpolation=INTER_LINEAR );
//! warps the image using affine transformation
CV_EXPORTS_W void warpAffine( InputArray src, OutputArray dst,
InputArray M, Size dsize,
int flags=INTER_LINEAR,
int borderMode=BORDER_CONSTANT,
const Scalar& borderValue=Scalar());
//! warps the image using perspective transformation
CV_EXPORTS_W void warpPerspective( InputArray src, OutputArray dst,
InputArray M, Size dsize,
int flags=INTER_LINEAR,
int borderMode=BORDER_CONSTANT,
const Scalar& borderValue=Scalar());
(2)imgwarp.cpp中有插值函数,resize
(3)float a=1.0f在内存中的表示是3f800000,这个3f800000是怎么得出的?
3f800000H=0 01111111 00000000000000000000000B (注意我分成了三段)
符点型数据在X86机上占四个字节,其存储按IEEE754标准实现,即:
1位的符号位s 0(代表正数,1代表负数)
8位的指数位e(移码表示)01111111是0的移码
23位的小数位f 0000000000000000000000 表示小数部分为0
计算机在表示符点数时,要将10进制数转成二进制的规范数形式进行存储的。即:1.f*2^e在存储时,小数前面的1是隐式存储的,不体现在数据中。
现在翻译一下:
3f800000H=1.0*2^0=1.0
(4)移码
①移码的定义:设由1位符号位和n位数值位组成的阶码,则 [X]移=2En + X (-2n<X<2n)
例如: X=+1011 [X]移=11011
X=-1011 [X]移=00101
②移码与补码的关系: [X]移与[X]补的关系是符号位互为相反数(仅符号位不同),
例如: X=+1011 [X]补=01011 [X]移=11011
X=-1011 [X