cvCreateImageで画像の領域を確保

#contents

*IplImage* cvCreateImage( CvSize size, int depth, int channels); [#neacf894]

CのmallocやC++のnewと同じ.領域をメモリ空間上に確保してくれる.

**引数 [#jaa1ff94]
-size:CvSize型の画像のサイズ.cvSize(width, height)で作るのが便利
-depth:各画素(要素)の大きさを表すint型
--IPL_DEPTH_1U:2値画像?
--IPL_DEPTH_8U:通常のグレースケール画像
--IPL_DEPTH_16U:単精度画像
--IPL_DEPTH_32F:倍精度画像
--IPL_DEPTH_8S:符号付きグレースケール画像
--IPL_DEPTH_16S:符号付き単精度画像
--IPL_DEPTH_32S:符号付き倍精度画像
-channels:色数を表すint型

**返り値 [#tcabecf4]
-確保された領域の先頭を示すIplImage*型.

*void cvReleaseImage( IplImage **image); [#m9c911c7]
確保されたメモリ領域を解放する
**引数 [#abf434fe]
-image:IplImage**型.画像のポインタ
**返り値 [#c41595f3]
-void型なのでなし

*解説 [#reae15bc]
-内部でcvCreateImageHeaderとcvCreateDataを呼んでいる.
-RC1?beta4?あたりから領域解放をしなくても自動的にOpenCVが解放してくれるようになった.

*サンプルコード [#t20f666b]

 IplImage* input = cvCreateImage( cvSize( 320, 240), IPL_DEPTH_8U, 1);
 cvReleaseImage( &input);
 //cvReleaseImageはIplImage**型が引数IplImage*型ではない

*実体ファイル [#b024ca59]
-cxcore/include/cxcore.h
-cxcore/src/cxarray.cpp

*注意 [#u3e35893]
-IplImage(OpenCV?)では幅は4の倍数しか使えない.
-4で割り切れない幅を指定した場合,widthstepに実際のメモリ空間上の幅が格納され,0でパディングされている.
-通常気にする必要は無いが,直接配列に書き込んだりする場合には注意が必要.

ジャンル[[:OpenCV]][[:OpenCV 1.0]]準拠

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS