画像の入出力 (非CUDA)

提供: メモ帳@fmaj7b5.info
2012年11月11日 (日) 22:34時点における白飯 (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

いきなり脇道。

CUDAは画像処理が速くなるというウワサなので、画像の読み書きがいるなぁ、と。 適当なライブラリを拾ってきてもいいけど、インストールやらリンクやら説明するのが面倒なので最低限のものを作成。

作るのは手書きもできる画像フォーマットNetpbmより、グレイスケール画像のpgmの入出力を書いてみた。 以下は使用例。


imageio_test.cpp:

#include "Image.h"
#include "ImageIO.h"
 
using namespace FM7b5;
 
int _tmain(int argc, _TCHAR* argv[])
{
	ImageGray image;
 
	try {
		image = loadPGM("..\\img\\sine.pgm");
	}
	catch (std::exception& e)
	{
		std::cout << e.what() << std::endl;
		return -1;
	}
 
	/* invert pixel values */
	ImageGray out(image.width(), image.height());
	for (size_t h = 0; h < image.height(); ++h) {
		for (size_t w = 0; w < image.width(); ++w) {
			out(w, h) = 255 - image(w, h);
		}
	}
 
	savePNM(out, "result.pgm");
 
	return 0;
}

loadなんちゃらで画像が読めてsaveなんちゃらで保存。(x, y)の形式で画素にアクセスできる。それだけ。