OpenGL de プログラミング - 画像読み込みと保存
現在地 >> メニュー >> サンプルコード::OpenCV >> 画像読み込みと保存


問題


以下のjpg画像を読み込んで、表示し、bmp形式で保存せよ。

jpg画像


答え

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

const char *filename = "test.jpg";

int main( int argc, char **argv)
{
	IplImage *imgA = cvLoadImage( filename, CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
	if(imgA ==NULL)
	{
		std::cout<< filename <<" : Can't Load Image .\n";
		return -1;
	}

	cvNamedWindow(filename,CV_WINDOW_AUTOSIZE);
	cvShowImage(filename,imgA);

	cvWaitKey(0);

	cvSaveImage( "out.bmp", imgA); //保存

	cvReleaseImage( &imgA ); //メモリ解放

	cvDestroyWindow(filename);

	return 0;
}

メモ


保存形式は「拡張子」で「OpenCV」が勝手に判断する。


キー入力で保存する例(「s」キー以外は普通におわる)

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

const char *filename = "test.jpg";

int main( int argc, char **argv)
{
	IplImage *imgA = cvLoadImage( filename, CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
	if(imgA ==NULL)
	{
		std::cout<< filename <<" : Can't Load Image .\n";
		return -1;
	}

	cvNamedWindow(filename,CV_WINDOW_AUTOSIZE);
	cvShowImage(filename,imgA);

	char key;
	key =static_cast<char>(cvWaitKey(0));
	if(key == 's')
	{
		cvSaveImage("out1.bmp",imgA);
		std::cout << "Save Image.\n";
	}

	cvReleaseImage( &imgA ); //メモリ解放

	cvDestroyWindow(filename);

	return 0;
}