cvConvertScale(cvCvtScale)を使って行列と画像を変換できる.

#contents

*void cvConvertScale( const void* src, void* dst, double scale, double shift ); [#j7bd9e1d]

srcをdstに変換する.本来は明度値の正規化のためだが,行列から画像への変換にも使えて便利.

**引数 [#k030178b]

-src:元の行列/画像
-dst:変換後の行列/画像
-scale:srcの値をscale倍する.defaultは1
-shift:srcの値をscale倍した後shift足す.defaultは0

**返り値 [#u0a5b512]

-voidなのでなし

**cvCvtScale( const void* src, void* dst, double scale, double shift ); [#ded1b6b1]
**cvScale( const void* src, void* dst, double scale, double shift ); [#s96142ce]
-両者ともcvConvertScaleの完全別名

**cvConvert( const void* src, void* dst); [#f214af62]
-cvConvertScale( src, dst, 1, 0);と等価
-ただ行列<->画像間の変換ならば,このdefineを利用するのが吉

*CvMat* cvGetMat(IplImage *image, CvMat* header); [#pf7d3b4b]
行列から画像を生成
**引数 [#ebd68049]
-image:IplImage*型の画像
**返り値 [#odd3b025]
-行列へのポインタ(header)
*IplImage* cvGetImage(CvMat *matrix, IplImage* header); [#tb71cbad]
画像から行列を生成
**引数 [#se0c6dba]
-matrix:CvMat*型の画像
**返り値 [#t272311e]
-画像へのポインタ(header)

*解説 [#k714fef2]

-本来ならcvConvertScaleは,sin波を明度値に変換と言った,明度値の正規化が目的
-scaleとshiftを省略すればCvMat型とIplImage型の間の変換関数となる
--これは本家のマニュアルにも書かれている使い方
--唯一CV_ELEM_SIZEだけは変わってしまう模様だが,他への影響は不明
--CV_ELEM_SIZEはmat->typeの上13bit分.なんに使われているかは不明
-cvCvtScale, cvScale, cvConvertはすべてdefineを使ったこの関数の別名
-cvConvertScaleは値渡し, cvGetMat, cvGetImageは参照渡し
--cvGetMat, cvGetImageでheaderは違う型のポインタだが,
--それぞれ配列の領域を確保しておく必要はない.
--CvMat型の構造,IplImage型の構造を知っておけば,混乱せずにすむ.

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


*実体ファイル [#s0fcccd2]
-cxcore/src/cxconvert.cpp (cvConvertScale)
-cxcore/src/cxarray.cpp (cvGetMat, cvGetImage)
-cxcore/include/cxcore.h

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

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