現在地 >> メニュー >> OpenCV >> C++インターフェイス編02 >> C++インターフェイス編02::まとめ2

問題

画像を読み込んで、別のオブジェクトとデータを共有させ、
cv::Mat型を破棄してもデータを破棄しないことを確認せよ。

答え

#include <iostream>
#include <string>
#include <cv.h>
#include <highgui.h>

#pragma comment(lib,"cv200.lib")
#pragma comment(lib,"cxcore200.lib")
#pragma comment(lib,"highgui200.lib")

const std::string filename("building.png");

int main()
{
	cv::Ptr<IplImage> imgA = cvLoadImage(filename.c_str());
	if(imgA.empty())
	{
		std::cerr << "Can't LoadImage\n";
		return -1;
	}

	{
		cv::Mat imgB(imgA);//データは共有状態
		cv::GaussianBlur(imgB,imgB,cv::Size(3,3),0);
		cv::namedWindow("cv::Mat");
		cv::imshow("cv::Mat",imgB);
		printf("IplImage : %p\n",imgA->imageData);
		printf("cv::Mat  : %p\n",imgB.data);
		cv::waitKey();

	}//ここでcv::Matオブジェクトは破棄(データは破棄しない)
	cvNamedWindow("IplImage");
	cvShowImage("IplImage",imgA);
	cvWaitKey();

	return 0;	//デストラクタによりメモリが破棄される
}

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます