cvmSetとcvmGetの不思議
openCVの行列演算について.
行列の各要素に間接アクセスする時は表題の2つの関数を使うが,どうも変数型が32Fか64F以外だとabortされるようになってる.以下cvmGetのようす.
opencv\cscore\include\cstypes.h 645行目〜
CV_INLINE double cvmGet( const CvMat* mat, int row, int col ) { int type; type = CV_MAT_TYPE(mat->type); assert( (unsigned)row < (unsigned)mat->rows && (unsigned)col < (unsigned)mat->cols ); if( type == CV_32FC1 ) return ((float*)(mat->data.ptr + (size_t)mat->step*row))[col]; else { assert( type == CV_64FC1 ); return ((double*)(mat->data.ptr + (size_t)mat->step*row))[col]; } }
cvmSetもほぼ同じ.なんでじゃ.これでは整数が報われない…!
とりあえず,すごい見落としもある気がするが,直接アクセスすることに.
参考
http://wiki.livedoor.jp/mikk_ni3_92/d/OpenCV::%B4%F0%CB%DC%CA%D408