45 #define icvCopyVector( src, dst, len ) memcpy( (dst), (src), (len)*sizeof((dst)[0]))
46 #define icvSetZero( dst, len ) memset( (dst), 0, (len)*sizeof((dst)[0]))
48 #define icvCopyVector_32f( src, len, dst ) memcpy((dst),(src),(len)*sizeof(float))
49 #define icvSetZero_32f( dst, cols, rows ) memset((dst),0,(rows)*(cols)*sizeof(float))
50 #define icvCopyVector_64d( src, len, dst ) memcpy((dst),(src),(len)*sizeof(double))
51 #define icvSetZero_64d( dst, cols, rows ) memset((dst),0,(rows)*(cols)*sizeof(double))
52 #define icvCopyMatrix_32f( src, w, h, dst ) memcpy((dst),(src),(w)*(h)*sizeof(float))
53 #define icvCopyMatrix_64d( src, w, h, dst ) memcpy((dst),(src),(w)*(h)*sizeof(double))
55 #define icvCreateVector_32f( len ) (float*)cvAlloc( (len)*sizeof(float))
56 #define icvCreateVector_64d( len ) (double*)cvAlloc( (len)*sizeof(double))
57 #define icvCreateMatrix_32f( w, h ) (float*)cvAlloc( (w)*(h)*sizeof(float))
58 #define icvCreateMatrix_64d( w, h ) (double*)cvAlloc( (w)*(h)*sizeof(double))
60 #define icvDeleteVector( vec ) cvFree( &(vec) )
61 #define icvDeleteMatrix icvDeleteVector
63 #define icvAddMatrix_32f( src1, src2, dst, w, h ) \
64 icvAddVector_32f( (src1), (src2), (dst), (w)*(h))
66 #define icvSubMatrix_32f( src1, src2, dst, w, h ) \
67 icvSubVector_32f( (src1), (src2), (dst), (w)*(h))
69 #define icvNormVector_32f( src, len ) \
70 sqrt(icvDotProduct_32f( src, src, len ))
72 #define icvNormVector_64d( src, len ) \
73 sqrt(icvDotProduct_64d( src, src, len ))
76 #define icvDeleteMatrix icvDeleteVector
78 #define icvCheckVector_64f( ptr, len )
79 #define icvCheckVector_32f( ptr, len )
84 for(
int i = 0;
i <
len;
i++ ) s += src[
i];
94 for(
int i = 0;
i <
len;
i++ ) s += src1[
i]*src2[
i];
105 for(
int i = 0;
i <
len;
i++ ) s += src1[
i]*src2[
i];
117 for( i = 0; i <
len; i++ )
118 dst[i] = src1[i] * src2[i];
127 for( i = 0; i <
len; i++ )
128 dst[i] = src1[i] * src2[i];
138 for( i = 0; i <
len; i++ )
139 dst[i] = src1[i] + src2[i];
148 for( i = 0; i <
len; i++ )
149 dst[i] = src1[i] + src2[i];
159 for( i = 0; i <
len; i++ )
160 dst[i] = src1[i] - src2[i];
169 for( i = 0; i <
len; i++ )
170 dst[i] = src1[i] - src2[i];
176 #define icvAddMatrix_64d( src1, src2, dst, w, h ) \
177 icvAddVector_64d( (src1), (src2), (dst), (w)*(h))
179 #define icvSubMatrix_64d( src1, src2, dst, w, h ) \
180 icvSubVector_64d( (src1), (src2), (dst), (w)*(h))
187 for( i = 0; len--; i += w+1 )
196 for( i = 0; len--; i += w+1 )
205 for( i = 0; len--; i += w+1 )
217 for( i = 0; len--; i += w+1 )
229 for( i = 0; i <
len; i++ )
230 dst[i] = (
float)(src[
i]*
scale);
240 for( i = 0; i <
len; i++ )
241 dst[i] = src[i]*scale;
251 for( i = 0; i < w; i++ )
252 for( j = 0; j < h; j++ )
253 *dst++ = src[j*w + i];
262 for( i = 0; i < w; i++ )
263 for( j = 0; j < h; j++ )
264 *dst++ = src[j*w + i];
271 #define m(y,x) mat[(y)*3 + (x)]
273 *det =
m(0,0)*(
m(1,1)*
m(2,2) -
m(1,2)*
m(2,1)) -
274 m(0,1)*(
m(1,0)*
m(2,2) -
m(1,2)*
m(2,0)) +
275 m(0,2)*(
m(1,0)*
m(2,1) -
m(1,1)*
m(2,0));
284 const float*
src2,
int w2,
int h2,
295 for( i = 0; i < h1; i++, src1 += w1, dst += w2 )
296 for( j = 0; j < w2; j++ )
299 for( k = 0; k < w1; k++ )
300 s += src1[k]*src2[j + k*w2];
309 const double*
src2,
int w2,
int h2,
320 for( i = 0; i < h1; i++, src1 += w1, dst += w2 )
321 for( j = 0; j < w2; j++ )
324 for( k = 0; k < w1; k++ )
325 s += src1[k]*src2[j + k*w2];
333 #define icvTransformVector_32f( matr, src, dst, w, h ) \
334 icvMulMatrix_32f( matr, w, h, src, 1, w, dst )
336 #define icvTransformVector_64d( matr, src, dst, w, h ) \
337 icvMulMatrix_64d( matr, w, h, src, 1, w, dst )
340 #define icvScaleMatrix_32f( src, dst, w, h, scale ) \
341 icvScaleVector_32f( (src), (dst), (w)*(h), (scale) )
343 #define icvScaleMatrix_64d( src, dst, w, h, scale ) \
344 icvScaleVector_64d( (src), (dst), (w)*(h), (scale) )
346 #define icvDotProduct_64d icvDotProduct_64f
392 for( i = 0; i <
len; i++ )
399 for( i = 0; i <
len; i++ )
400 dst[i] = (
float)src[
i];