2014年4月22日火曜日

cv::MatのTips

サンプルソースを見ていいると

for (int y = 0; y < frame.cols ; y++) {
    ... frame.ptr<unsigned char>(y) ...
}
という記述があり、何をしているかわからなかった。


mat.hppのソースを見てみると、

template<typename _Tp> inline _Tp* Mat::ptr(int y)
{
    CV_DbgAssert( y == 0 || (data && dims >= 1 && (unsigned)y < (unsigned)size.p[0]) );
    return (_Tp*)(data + step.p[0]*y);
}

と定義されており、画像データのラインY行目の先頭のポインタを求め、指定の型にcastするものとわかった。





その他
OpenCVをさわっていると、source, distinationの並びに慣れてしまい、memcpyがto, fromの並びなので、ソースを見ていて悩んでしまうようになった

0 件のコメント:

コメントを投稿