ユーティリティとシステム関数,マクロ ====================================================== .. highlight:: cpp .. index:: alignPtr cv::alignPtr ------------ `id=0.150143399304 Comments from the Wiki `__ .. cfunction:: template _Tp* alignPtr(_Tp* ptr, int n=sizeof(_Tp)) ポインタのアラインメントを,指定したバイト数に揃えます. :param ptr: 調整されるポインタ. :param n: アラインメントサイズ.2の指数倍でなければいけません. この関数は,入力ポインタと同じタイプの,アラインメントが調整されたポインタを返します. .. math:: \texttt{(\_Tp*)(((size\_t)ptr + n-1) \& -n)} .. index:: alignSize cv::alignSize ------------- `id=0.532434645926 Comments from the Wiki `__ .. cfunction:: size_t alignSize(size_t sz, int n) バッファサイズのアラインメントを,指定したバイト数に揃えます. :param sz: 調整されるバッファサイズ. :param n: アラインメントサイズ.2の指数倍でなければいけません. この関数は, ``sz`` 以上かつ ``n`` で割りきれる最小の値を返します. .. math:: \texttt{(sz + n-1) \& -n} .. index:: allocate cv::allocate ------------ `id=0.737421254878 Comments from the Wiki `__ .. cfunction:: template _Tp* allocate(size_t n) 要素の配列を確保します. :param n: 確保される要素数. 汎用関数 ``allocate`` は,指定した要素数分のバッファを割り当てます.また,各要素に対してデフォルトコンストラクタが呼ばれます. .. index:: deallocate cv::deallocate -------------- `id=0.051960676053 Comments from the Wiki `__ .. cfunction:: template void deallocate(_Tp* ptr, size_t n) 要素の配列を解放します. :param ptr: 解放されるバッファへのポインタ. :param n: バッファ内の要素数. 関数 ``deallocate`` は, :func:`allocate` によって割り当てられたバッファを解放します.要素数は :func:`allocate` に渡される値と一致しなければいけません. .. index:: CV_Assert .. _CV_Assert: CV_Assert --------- `id=0.520279787759 Comments from the Wiki `__ .. cfunction:: CV_Assert(expr) 実行時に条件をチェックします. .. code-block:: c #define CV_Assert( expr ) ... #define CV_DbgAssert(expr) ... .. :param expr: チェックされる式. ``CV_Assert`` マクロや ``CV_DbgAssert`` マクロは指定された式を評価し,それが 0 ならばエラーを発生さます( :func:`error` を参照してください). ``CV_DbgAssert`` マクロはデバッグモードでのみ有効なのに対し, ``CV_Assert`` マクロはデバッグとリリースの両モードで条件をチェックします. .. index:: error cv::error --------- `id=0.446305183908 Comments from the Wiki `__ .. cfunction:: void error( const Exception\& exc ) .. cfunction:: \#define CV_Error( code, msg ) <...> .. cfunction:: \#define CV_Error_( code, args ) <...> エラーを発生させ,例外を発行します. :param exc: 発行される例外 :param code: エラーコード.通常は負の値.定義済みのエラーコードは ``cxerror.h`` で見られます. :param msg: エラーメッセージのテキスト. :param args: printf 形式のフォーマットをもつエラーメッセージ.丸括弧で囲まれます. 関数 ``error`` と,その補助マクロ ``CV_Error`` および ``CV_Error_`` は,エラーハンドラを呼び出します.現在のエラーハンドラは,エラーコード( ``exc.code`` ),コンテキスト( ``exc.file`` , ``exc.line`` ),エラーメッセージ( ``exc.err`` )を,標準エラーストリーム ``stderr`` に表示します.デバッグモードでは,デバッガで実行スタックと全パラメータを分析できるように,メモリアクセス違反を引き起こします.リリースモードでは,例外 ``exc`` が投げられます. ``CV_Error_`` マクロは,エラーメッセージを実行時に作成し,これが動的情報を含むようにします.例えば: .. code-block:: c // テキストメッセージ書式は,全体が括弧で囲まれることに注意してください. CV_Error_(CV_StsOutOfRange, ("the matrix element ( i, j, mtx.at(i,j))) .. .. index:: Exception .. _Exception: Exception --------- `id=0.878074032565 Comments from the Wiki `__ .. ctype:: Exception error に渡される例外クラス. .. code-block:: c 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_`` マクロを介して,例外が明示的に作成され投げられます. :func:`error` を参照してください. .. index:: fastMalloc cv::fastMalloc -------------- `id=0.259498303084 Comments from the Wiki `__ .. cfunction:: void* fastMalloc(size_t size) アラインメントが調整されたメモリバッファを割り当てます. :param size: 割り当てられるバッファサイズ. 関数 ``fastMalloc`` は,指定されたサイズのバッファを割り当て,それを返します.バッファサイズが 16バイト以上の場合,返されるバッファのアラインメントは 16 バイト境界に調整されます. .. index:: fastFree cv::fastFree ------------ `id=0.525029732099 Comments from the Wiki `__ .. cfunction:: void fastFree(void* ptr) メモリバッファを解放します. :param ptr: 割り当てられたバッファへのポインタ. 関数 ``fastFree`` は, :func:`fastMalloc` によって割り当てられたバッファを解放します.NULL ポインタが渡された場合,この関数は何も行いません. .. index:: format cv::format ---------- `id=0.881423455479 Comments from the Wiki `__ .. cfunction:: string format( const char* fmt, ... ) pintf 風の表現を用いてフォーマットされたテキスト string を返します. :param fmt: printf互換のフォーマット指定子. 関数 ``format`` は, ``sprintf`` のように振る舞いますが,STL string を作成して返します.これは :func:`Exception` コンストラクタで,エラーメッセージを作成する際に利用されます. .. index:: getNumThreads cv::getNumThreads ----------------- `id=0.633204390735 Comments from the Wiki `__ .. cfunction:: int getNumThreads() OpenCV で利用されているスレッド数を返します. OpenCV で利用されているスレッド数を返します. 参考: :func:`setNumThreads` , :func:`getThreadNum` . .. index:: getThreadNum cv::getThreadNum ---------------- `id=0.941802924749 Comments from the Wiki `__ .. cfunction:: int getThreadNum() 現在実行中のスレッドのインデックスを返します. この関数は,現在実行されているスレッドのインデックス(0 基準)を返します.この関数は,OpenMP の並列領域内でのみ有効です.OpenCV が OpenMP をサポートしないようにビルドされている場合,この関数は常に 0 を返します. 参考: :func:`setNumThreads` , :func:`getNumThreads` . .. index:: getTickCount cv::getTickCount ---------------- `id=0.187388926439 Comments from the Wiki `__ .. cfunction:: int64 getTickCount() tick 数を返します. この関数は,あるイベント(例えば,マシン起動時)からの tick 数を返します. これは, :func:`RNG` を初期化したり,関数の呼び出し前後で tick 数を読み出すことで関数の実行時間を計測したりするのに用いられます. .. index:: getTickFrequency cv::getTickFrequency -------------------- `id=0.520990081497 Comments from the Wiki `__ .. cfunction:: double getTickFrequency() 1 秒毎の tick 数を返します. この関数は,1秒毎の tick 数を返します. つまり以下のコードは,実行時間を秒単位で求めます. .. code-block:: c double t = (double)getTickCount(); // 何らかの処理を行います ... t = ((double)getTickCount() - t)/getTickFrequency(); .. .. index:: setNumThreads cv::setNumThreads ----------------- `id=0.551759528011 Comments from the Wiki `__ .. cfunction:: void setNumThreads(int nthreads) OpenCV で利用されるスレッド数を設定します. :param nthreads: OpenCV で利用されるスレッド数. この関数は,OpenMP の並列領域内において OpenCV で利用されるスレッド数を設定します. ``nthreads=0`` ならば,関数はスレッドのデフォルト値を利用します.これは通常,CPU のコア数と等しくなります. 参考: :func:`getNumThreads` , :func:`getThreadNum`