ユーティリティとシステム関数,マクロ

cv::alignPtr

Comments from the Wiki

template<typename _Tp> _Tp* alignPtr(_Tp* ptr, int n=sizeof(_Tp))

ポインタのアラインメントを,指定したバイト数に揃えます.

パラメタ:
  • ptr – 調整されるポインタ.
  • n – アラインメントサイズ.2の指数倍でなければいけません.

この関数は,入力ポインタと同じタイプの,アラインメントが調整されたポインタを返します.

\texttt{(\_Tp*)(((size\_t)ptr + n-1) \& -n)}

cv::alignSize

Comments from the Wiki

size_t alignSize(size_t sz, int n)

バッファサイズのアラインメントを,指定したバイト数に揃えます.

パラメタ:
  • sz – 調整されるバッファサイズ.
  • n – アラインメントサイズ.2の指数倍でなければいけません.

この関数は, sz 以上かつ n で割りきれる最小の値を返します.

\texttt{(sz + n-1) \& -n}

cv::allocate

Comments from the Wiki

template<typename _Tp> _Tp* allocate(size_t n)

要素の配列を確保します.

パラメタ:
  • n – 確保される要素数.

汎用関数 allocate は,指定した要素数分のバッファを割り当てます.また,各要素に対してデフォルトコンストラクタが呼ばれます.

cv::deallocate

Comments from the Wiki

template<typename _Tp> void deallocate(_Tp* ptr, size_t n)

要素の配列を解放します.

パラメタ:
  • ptr – 解放されるバッファへのポインタ.
  • n – バッファ内の要素数.

関数 deallocate は, allocate() によって割り当てられたバッファを解放します.要素数は allocate() に渡される値と一致しなければいけません.

CV_Assert

Comments from the Wiki

CV_Assert(expr)

実行時に条件をチェックします.

#define CV_Assert( expr ) ...
#define CV_DbgAssert(expr) ...
param expr:チェックされる式.

CV_Assert マクロや CV_DbgAssert マクロは指定された式を評価し,それが 0 ならばエラーを発生さます( error() を参照してください). CV_DbgAssert マクロはデバッグモードでのみ有効なのに対し, CV_Assert マクロはデバッグとリリースの両モードで条件をチェックします.

cv::error

Comments from the Wiki

void error(const Exception& exc)
#define CV_Error( code, msg ) <...>
#define CV_Error_( code, args ) <...>

エラーを発生させ,例外を発行します.

パラメタ:
  • exc – 発行される例外
  • code – エラーコード.通常は負の値.定義済みのエラーコードは cxerror.h で見られます.
  • msg – エラーメッセージのテキスト.
  • args – printf 形式のフォーマットをもつエラーメッセージ.丸括弧で囲まれます.

関数 error と,その補助マクロ CV_Error および CV_Error_ は,エラーハンドラを呼び出します.現在のエラーハンドラは,エラーコード( exc.code ),コンテキスト( exc.file , exc.line ),エラーメッセージ( exc.err )を,標準エラーストリーム stderr に表示します.デバッグモードでは,デバッガで実行スタックと全パラメータを分析できるように,メモリアクセス違反を引き起こします.リリースモードでは,例外 exc が投げられます.

CV_Error_ マクロは,エラーメッセージを実行時に作成し,これが動的情報を含むようにします.例えば:

// テキストメッセージ書式は,全体が括弧で囲まれることに注意してください.
CV_Error_(CV_StsOutOfRange,
    ("the matrix element (
    i, j, mtx.at<float>(i,j)))

Exception

Comments from the Wiki

Exception

error に渡される例外クラス.

class  Exception
{
public:
    // 様々なコンストラクタとコピー処理
    Exception() { code = 0; line = 0; }
    Exception(int _code, const string& _err,
              const string& _func, const string& _file, int _line);
    Exception(const Exception& exc);
    Exception& operator = (const Exception& exc);

    // エラーコード
    int code;
    // エラーテキストメッセージ
    string err;
    // エラーが発生した関数名
    string func;
    // エラーが発生したソースのファイル名
    string file;
    // エラーが発生したソースの行番号
    int line;
};

Exception クラスは,プログラム中で発生したエラーに関するすべての,あるいは,ほぼすべての必要情報をカプセル化します.通常, CV_Error マクロおよび CV_Error_ マクロを介して,例外が明示的に作成され投げられます. error() を参照してください.

cv::fastMalloc

Comments from the Wiki

void* fastMalloc(size_t size)

アラインメントが調整されたメモリバッファを割り当てます.

パラメタ:
  • size – 割り当てられるバッファサイズ.

関数 fastMalloc は,指定されたサイズのバッファを割り当て,それを返します.バッファサイズが 16バイト以上の場合,返されるバッファのアラインメントは 16 バイト境界に調整されます.

cv::fastFree

Comments from the Wiki

void fastFree(void* ptr)

メモリバッファを解放します.

パラメタ:
  • ptr – 割り当てられたバッファへのポインタ.

関数 fastFree は, fastMalloc() によって割り当てられたバッファを解放します.NULL ポインタが渡された場合,この関数は何も行いません.

cv::format

Comments from the Wiki

string format(const char* fmt, ...)

pintf 風の表現を用いてフォーマットされたテキスト string を返します.

パラメタ:
  • fmt – printf互換のフォーマット指定子.

関数 format は, sprintf のように振る舞いますが,STL string を作成して返します.これは Exception() コンストラクタで,エラーメッセージを作成する際に利用されます.

cv::getNumThreads

Comments from the Wiki

int getNumThreads()

OpenCV で利用されているスレッド数を返します.

OpenCV で利用されているスレッド数を返します.

参考: setNumThreads() , getThreadNum() .

cv::getThreadNum

Comments from the Wiki

int getThreadNum()

現在実行中のスレッドのインデックスを返します.

この関数は,現在実行されているスレッドのインデックス(0 基準)を返します.この関数は,OpenMP の並列領域内でのみ有効です.OpenCV が OpenMP をサポートしないようにビルドされている場合,この関数は常に 0 を返します.

参考: setNumThreads() , getNumThreads() .

cv::getTickCount

Comments from the Wiki

int64 getTickCount()

tick 数を返します.

この関数は,あるイベント(例えば,マシン起動時)からの tick 数を返します. これは, RNG() を初期化したり,関数の呼び出し前後で tick 数を読み出すことで関数の実行時間を計測したりするのに用いられます.

cv::getTickFrequency

Comments from the Wiki

double getTickFrequency()

1 秒毎の tick 数を返します.

この関数は,1秒毎の tick 数を返します. つまり以下のコードは,実行時間を秒単位で求めます.

double t = (double)getTickCount();
// 何らかの処理を行います ...
t = ((double)getTickCount() - t)/getTickFrequency();

cv::setNumThreads

Comments from the Wiki

void setNumThreads(int nthreads)

OpenCV で利用されるスレッド数を設定します.

パラメタ:
  • nthreads – OpenCV で利用されるスレッド数.

この関数は,OpenMP の並列領域内において OpenCV で利用されるスレッド数を設定します. nthreads=0 ならば,関数はスレッドのデフォルト値を利用します.これは通常,CPU のコア数と等しくなります.

参考: getNumThreads() , getThreadNum()