web-dev-qa-db-ja.com

IplImage *からcv :: MATへの変換

IplImage *をMatに変換するために検索しましたが、すべての回答はcvMatへの変換に関するものでした。

どうしたらいいの?そして、MatとcvMatの違いは何ですか?

前もって感謝します

21
user1807367

ここが良い解決策です

Mat(const IplImage* img, bool copyData=false);
14
Houssem Badri

レコードの場合:core/src/matrix.cppを見ると、実際にはコンストラクターcv::Mat(IplImage*)が消えているようです。

しかし、私はこの代替案を見つけました:

IplImage * ipl = ...;
cv::Mat m = cv::cvarrToMat(ipl);  // default additional arguments: don't copy data.
39
Moeen MH

推奨される方法は cv::cvarrToMat 関数です

cv::Mat-OpenCV 2.xの基本データ構造

CvMat-cv::Matの古いCアナログ

11
Andrey Kamaev

Mat documentation をご覧ください。

// converts old-style IplImage to the new matrix; the data is not copied by default
Mat(const IplImage* img, bool copyData=false);
5
Safir
  • cv :: MatまたはMat、両方とも同じです。

  • Matには演算子CvMat()があるため、単純な割り当てが機能します

マットをCvMatに変換

Mat mat = ---------;
CvMat cvmat = mat;

CVMatをMatに変換

Mat dst = Mat(cvmat, true);  

マットをIplImage *に変換

>シングルチャネルの場合

IplImage* image = cvCloneImage(&(IplImage)mat); 

> 3チャネルの場合

IplImage* image = cvCreateImage(cvSize(mat.cols, mat.rows), 8, 3);
IplImage ipltemp = mat;
cvCopy(&ipltemp, image);

これがお役に立てば幸いです。乾杯:)

4
Abc