OpenCV学習ノート:Mat,CvMat,CvArr,IplImageデータ型の相互変換(総括版)
5211 ワード
一、説明
①MatはOpenCVとC++のインタフェースマトリクスクラスであり、ImlImageはOpenCVとC言語のインタフェースの構造体であるが、C++プログラムは、MFCのPicture ControlなどのImlImageを用いてピクチャを表示する場合がある.②MatタイプとCvMatタイプとIplImageタイプはいずれも画像を表すことができ、Matタイプは計算に重点を置き、数学性が高い.CvMatとIplImageタイプは「画像」に重点を置いています.③IplImageタイプ画像の最適化は変数origin---原点に現れる.コンピュータの視覚処理において、重要な不便は原点の定義が不明であり、画像源、符号化フォーマット、オペレーティングシステムなどが原点の選択に影響を与えることである.これを補うためにopenCVでは、ユーザーが独自の原点設定を定義できます.値0は、原点が画像の左上隅、1は左下隅にあることを示します.④CvArrが関数パラメータとして使用される場合、CvMatまたはIplImageのタイプのデータ型が入力できることを意味します.CvArr->CvMat->Ipllmageという派生関係があります.⑤Matはクラス(Class)であり、CvMatは構造体(Struct)である.
二、変換
⑴IplImageからMatへ
(2)MatからIplImage*への移行
(3)Mat回転cvArr*
(4)cvArr*からMatへ
(5)MatからCvMatへの移行
(6)CvMatからMatへの移行
①MatはOpenCVとC++のインタフェースマトリクスクラスであり、ImlImageはOpenCVとC言語のインタフェースの構造体であるが、C++プログラムは、MFCのPicture ControlなどのImlImageを用いてピクチャを表示する場合がある.②MatタイプとCvMatタイプとIplImageタイプはいずれも画像を表すことができ、Matタイプは計算に重点を置き、数学性が高い.CvMatとIplImageタイプは「画像」に重点を置いています.③IplImageタイプ画像の最適化は変数origin---原点に現れる.コンピュータの視覚処理において、重要な不便は原点の定義が不明であり、画像源、符号化フォーマット、オペレーティングシステムなどが原点の選択に影響を与えることである.これを補うためにopenCVでは、ユーザーが独自の原点設定を定義できます.値0は、原点が画像の左上隅、1は左下隅にあることを示します.④CvArrが関数パラメータとして使用される場合、CvMatまたはIplImageのタイプのデータ型が入力できることを意味します.CvArr->CvMat->Ipllmageという派生関係があります.⑤Matはクラス(Class)であり、CvMatは構造体(Struct)である.
二、変換
⑴IplImageからMatへ
IplImage* img = cvLoadImage("1.jpg");
Mat img = cvarrToMat(img);// src Mat
(2)MatからIplImage*への移行
Mat mat = imread("1.jpg");
IplImage* img1 = &(IplImage)mat; //
IplImage *img2 = cvCloneImage(img1);// ,
(3)Mat回転cvArr*
Mat img = imread("1.jpg");
IplImage tmp = IplImage(img);
CvArr* s=(CvArr*)&tmp ;
(4)cvArr*からMatへ
CvArr* img;
Mat img = cv::cvarrToMat(img);
(5)MatからCvMatへの移行
Mat a;
CvMat b = a; //
CvMat temp = a; // CvMat ( )
CvMat *b;
cvCopy(&temp, b); //
(6)CvMatからMatへの移行
CvMat* a;
Mat b(a); //
Mat b(a, false); //
Mat b = a; //
Mat b = Mat(a, true); //