cvCopyで行列のコピーを作成できる
void Mat::copyTo( OutputArray m ) const;†
cv::Mat のメソッド。画像データをコピーする
返り値†
Mat Mat::clone() const;†
画像をまるまるコピーする。
返り値†
void cvCopy( CvMat* src, CvMat* dst, CvMat* mask = NULL);†
行列srcから行列dstへ中身をコピーする関数.Mat::copyTo のCインタフェース、CvMat版
- src:CvMat*型のコピー元の行列
- dst:CvMat*型のコピー先の行列
- mask:CvMat*型のmask.srcの1部だけをdstにコピーできる.省略可
返り値†
画像のコピーを作る。Mat::clone のCインタフェース、IplImage版
返り値†
行列のコピーを作る。Mat::clone のCインタフェース、CvMat版
返り値†
- srcは言うまでも無く,dstも領域確保されている必要がある.
- CvMat*型のmaskは,0が入っていたらコピーしない,それ以外ならコピーする,のはず.
- 画像も行列同様コピーできる.
- cvClone系は領域確保もしてくれる.
サンプルコード†
行列の場合†
CvMat *S = cvCreateMat( 3, 3, CV_32F);
CvMat *R = cvCreateMat( 3, 3, CV_32F);
cvCopy( S, R); //これだけだと空っぽの行列同士のコピーになるが
画像の場合†
IplImage *input = cvLoadImage("./test.bmp",0);
IplImage *copy = cvCreateImage( cvGetSize(input), input->depth, input->nChannels);
//ここで同じ領域を宣言しておかないといけない
cvCopy( input, copy);
下位互換性†
cvCopyは昔cvmCopyと言う名前で実装されていた.下位互換性のため,今でもcvmCopyは利用できるが,将来的にOpenCVから削除される可能性があるため,cvCopyを利用することが推奨されている.
参考:後方互換関数を使わないようにする
実体ファイル†
- :OpenCV 2.4
- sources/modules/core/include/opencv2/core/core.hpp
- sources/modules/core/src/copy.cpp
- :OpenCV 1.0
- cxcore/include/cxcore.h
- cxcore/src/cxcopy.cpp
ジャンル:OpenCV:OpenCV 1.0:OpenCV 2.4準拠