2011-02-05 16 views
5

まずは初心者です。はい?C++またはC言語で画像を操作する

私は、関連する回答や質問を読んで、この問題で私を助けてくださいました。

どのように私はそれをリサイズし、そのヒストグラムを取得し、グレースケール画像に変換し、C++でのJPEG画像ファイルを開くことができます小さな画像、その特定の領域を切り抜く、またはその特定の領域を表示しますか?

これらのタスクでは、一般的にCまたはC++の方が高速ですか?

最も簡単で高速なライブラリは何ですか?ランニングタイムは非常に重要です。

ありがとうございました。

答えて

7

ここでは、magickライブラリを使用した例です。あなたはできる基本的なイメージ操作のためのよく

#include <Magick++.h> 
#include <iostream> 
using namespace std; 
using namespace Magick; 
int main(int argc,char **argv) 
{ 
    // Construct the image object. Seperating image construction from the 
    // the read operation ensures that a failure to read the image file 
    // doesn't render the image object useless. 
    Image image; 

    try { 
    // Read a file into image object 
    image.read("girl.jpeg"); 

    // Crop the image to specified size (width, height, xOffset, yOffset) 
    image.crop(Geometry(100,100, 100, 100)); 

    // Write the image to a file 
    image.write("x.jpeg"); 
    } 
    catch(Exception &error_) 
    { 
     cout << "Caught exception: " << error_.what() << endl; 
     return 1; 
    } 
    return 0; 
} 

check many more examples here

+0

あなたは速く入力しています!私はほとんどこの解決策も持っていました。 ;) – Paul

+0

次回は運が良い。 :) – ayush

+0

あなたの役に立つanswer.A寄付のために本当にありがとう:すべての奴隷から人間を主張する男に近づいています。 – mohammad

2

CやC++で画像を扱うためのライブラリはたくさんありますが、他のどの言語よりも優れているわけではありません。 OpenCV はこれらのタスクのいくつかを大きくサポートしていますが、ImageMagick wiki,は他にも優れています。 JPEGグループには独自のJPEG処理機能も実装されています。これらはおそらく、始めるには良いリソースです。 APIドキュメントでは、これらのそれぞれを使用する方法を具体的に説明しています。

CまたはC++ライブラリがより高速にバインドされているかどうかについては、2つの間で明確な勝者はありません。結局のところ、あなたはいつもC++でCライブラリをコンパイルすることができます。言い換えれば、C++ライブラリは言語の複雑さのためにピックアップするのがやや難しい傾向にありますが、言語に慣れていれば使いやすくなります。 (私はC++に少し偏っているので、ソースを考慮してください)。私はあなたが仕事のために見つけやすい言葉で行くことをお勧めします。特にパフォーマンスが重要な場合はどちらも悪い選択ではありません。

あなたのプロジェクトで最高の運があります!

2

:、画像を読み込み、それをトリミングし、新しいファイル(例外処理はオプションですが、強くお勧めします)に書き込む

プログラムQtのQImageクラス(およびその他)も試してみてください。これにより、オープニング、スケーリング、サイズ変更、トリミング、ピクセル操作などのタスクの基本機能が提供されます。

そうしないと、すでにImageMagickまたはOpenCVが使用されている可能性があります。 OpenCVのは、多くの画像操作/画像認識タスクのためにそれを例の多くを提供しています...

は、それが

1

libgdが最も簡単、最軽量のソリューションについてです...お役に立てば幸いです。

gdImageCreateFromJpeg 
gdImageCopyMergeGray 
gdImageCopyResized 

ああ、それはすべてです。

1

時間を実行するとの事、あなたのような、GPUチップに処理ジョブの負荷を軽減する画像処理ライブラリを考慮しなければならない非常に重要である場合:

+0

OpenCVは処理をGPUにオフロードします。 – Pietro

関連する問題