2011-01-01 15 views
7

ハードドライブからイメージファイルを共通のファイル形式で読み込み、1つのピクセルの色を変更し、結果のイメージをC++で画面に表示するとします。イメージを描く最も簡単な方法は?

上記を最小限のコードで実行するには、(オープンソース)ライブラリをお勧めしますか?

また、どのライブラリが上記を最もエレガントな方法で実行できるのでしょうか?

背景:私は最近、多くのコンピュータグラフィックス文献を読んできました。実装したいと思う比較的簡単なピクセルベースのアルゴリズムがたくさんあります。しかし、アルゴリズムそのものは通常は簡単に実装できますが、ピクセル単位でイメージを操作して結果を表示するために必要な量のフレームワークが私の手を止めました。

+1

単独で表示するとコードが多くなり、システムにも依存します。あなたはすでにいくつかのGUIライブラリを使用していますか?どのプラットフォームを使用していますか? –

+0

Martin:まだソースコードはありません。 (実際にはありますが、十分に小さいので、最初からやり直すのを躊躇しません) – Benno

+3

永遠のC++の質問です。すでに5つのアップボックスでバックアップされています。 20年以上のグラフィカルユーザーインターフェイスが主流になった後、画像を表示するという中心的な問題は、依然として言語の実践者の不器用さを引き出しています。良くない。 –

答えて

10

CImgライブラリは使いやすいです。

CImg<unsigned char> img("lena.png");    // Read in the image lena.png 
const unsigned char valR = img(10,10,0,0);  // Read the red component at coordinates (10,10) 
const unsigned char valG = img(10,10,0,1);  // Read the green component at coordinates (10,10) 
const unsigned char valB = img(10,10,2);   // Read the blue component at coordinates (10,10) (Z-coordinate omitted here). 
const unsigned char avg = (valR + valG + valB)/3; // Compute average pixel value. 
img(10,10,0) = img(10,10,1) = img(10,10,2) = avg; // Replace the pixel (10,10) by the average grey value. 
CImgDisplay main_disp(img, "Modified Lena");  // Display the modified image on the screen 
img.save("lena_mod.png");       // Save the modified image to lena_mod.png 

これはかなり強力な画像処理ライブラリとしても使用できます。例hereを参照してください。

+0

より簡単なプログラム(「最小限のコードで」要求)は、画像を表示せず、変更された画像を出力し、別の画像ビューアプログラムを使用します。 – Raedwald

+0

@ Raedwald "と表示され、画面に結果の画像が表示されます。"これは、プログラムから画像ビューアを起動したいという印象を与えます。しかし、それは1つのラインだから、IMHOを気にする必要はない。 – marcog

+0

いいです!私が間違っていないなら、それはLibPNG&LibJPEGに依存していますか? – Viet

4

OpenCVライブラリを調べる必要があります。特にコンピュータグラフィックスに関する理論的研究を行っている場合は特にそうです。

+0

より豪華な代替はインテルパフォーマンスプリミティブライブラリです – 9dan

+0

何かの理由で@ 9danピクセル以上のものを望むなら、私はOpenCVがインテルライブラリから始まったと思っています...私はそれについて間違っていました? – kenny

0

対象アプリケーションがWindowsのみの場合は、herehereと記載されているGDI +を使用できます。また、hereは、GDI +を使用した画像操作のコンセプトの1つです。

編集:ライブラリはオープンソースではなく、Windows XP(98および2000にインストール可能)からOSに組み込まれており、APIは一般公開されており、より複雑な環境で使用できる多くの画像処理機能を提供しますアルゴリズム。

0

+1 CImgでは、この目的のために設計されています。マルチプラットフォームフレームワークで画像処理アルゴリズムを非常に高速かつ簡単に実装します。

関連する問題