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

cv::alignPtr

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

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

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

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

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

cv::alignSize

size_t alignSize(size_t sz, int n)

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

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

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

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

cv::allocate

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

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

Parameter:n – 確保される要素数

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

cv::deallocate

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

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

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

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

cv::CV_Assert

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

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

Exception

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

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

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

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

cv::fastMalloc

void* fastMalloc(size_t size)

アラインメントが調整されたメモリバッファを確保します.

Parameter:size – 確保されるバッファサイズ

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

cv::fastFree

void fastFree(void* ptr)

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

Parameter:ptr – 確保されたバッファへのポインタ

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

cv::format

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

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

Parameter:fmt – printf互換のフォーマット指定子

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

cv::getNumThreads

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

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

参考: setNumThreads() , getThreadNum() .

cv::getThreadNum

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

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

参考: setNumThreads() , getNumThreads() .

cv::getTickCount

int64 getTickCount()
tick 数を返します.

この関数は,あるイベント(例えば,マシン起動時)からの tick 数を返します.

これは, RNG() を初期化したり,関数の呼び出し前後で tick 数を読み出すことで関数の実行時間を計測したりするのに用いられます.

cv::getTickFrequency

double getTickFrequency()
1 秒毎の tick 数を返します.

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

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

cv::setNumThreads

void setNumThreads(int nthreads)

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

Parameter:nthreads – OpenCV で利用されるスレッド数

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

参考: getNumThreads() , getThreadNum()