OpenCV画像タイプの書き込みと変換:マットとIPLImage



Opencv Image Type Writing



からの転送: https://blog.csdn.net/qq_37764129/article/details/81271660
OpenCV1は、メモリを直接公開するCインターフェイスで定義された画像ストレージ形式IplImage *に基づいています。メモリの解放を忘れると、メモリリークが発生します。 OpenCV2から、Matクラスを使用して画像を保存し始めました。新しいC ++インターフェイスcv :: Matは、元のcスタイルのCvMatとIplImageを置き換えます。現在、バージョン2.0はcのインターフェースもサポートしています。
C ++のcv :: Matは、cのインターフェイスに関連する行列と画像の概念を統合します。実際、マトリックスと画像は実際には同じです。 cv :: MatはC ++クラスであるため、いくつかの関連機能もあります。たとえば、メモリの解放。 C ++では、オブジェクトがその使用範囲を超えると、デストラクタが自動的に呼び出されて破棄されます。 cでは、cvCreateImageなどの関数を使用してCvMat型変数にメモリ空間を割り当てる場合、対応する関数cvReleaseImageを呼び出して、自動的に破棄せずに解放する必要があります。対応するリリースがない場合、メモリリークが発生します。

MatとIplImageの違いは次のとおりです。
画像
lplImageプログラム:



#include 'cv.h' #include 'cxcore.h' #include 'highgui.h' #include 'stdio.h' int main(void) { IplImage* Image IplImage* Image_Gray // In c language, the declaration needs to be before the statement Image = cvLoadImage('D:\opencv2.4.4\lema.jpg', 1) // Load image, 1-color Image_Gray = cvCreateImage(cvGetSize(Image), Image->depth, 1) // Create memory cvCvtColor(Image, Image_Gray, CV_BGR2GRAY) // color map -> grayscale cvShowImage('Image', Image) cvShowImage('Image_Gray', Image_Gray) cvWaitKey(0) cvReleaseImage(&Image) cvReleaseImage(&Image_Gray) return 0 }

フードプログラム:

#include 'cv.h' #include 'cxcore.h' #include 'highgui.h' #include using namespace std using namespace cv int main(void) { Mat Image = imread('D:\opencv2.4.4\lema.jpg',1) imshow('Image', Image) Mat Image_Gray cvtColor(Image, Image_Gray, CV_BGR2GRAY, 0) imshow('Image_Gray', Image_Gray) waitKey(0) return 0 }

画像



リファレンスブログ

https://blog.csdn.net/lanjingling09/article/details/27707049

https://blog.csdn.net/xumi13/article/details/52737563



https://blog.csdn.net/ayuee1992/article/details/38122609