7

基本的な画像操作を行うための優れた C++ ライブラリを探しています。私がする必要があるのは、画像をグレースケールに変換し、画像のピクセルを読み取ることができるようにすることです。

私は OpenCV、GIL、CImg、Magick++ を見てきましたが、それらはあまり優れていなかったか、ライブラリを使用して画像をグレースケールに変換する方法がわかりませんでした。

4

6 に答える 6

6

自分で色をグレースケールに変換する場合、通常は3つのチャネルに同じ重みを付けたくありません。通常の変換は次のようなものです。

灰色=0.3* R + 0.6 * G + 0.1 * B;

明らかに、これらの要素は石で書かれていませんが、かなり近いはずです。

係数を変更することで、さまざまな色のフィルターをシミュレートできます。白黒写真で最も一般的なフィルターは赤です。つまり、赤を増やし、他の2つを減らして、合計係数を1.0に維持します(ただし、G:Bを維持します)。約6:1程度の比率)。

于 2011-03-25T00:55:36.380 に答える
4

CImg はおそらく最も使いやすいです。インストールは必要ありません。単なるヘッダー ファイルです。

于 2011-03-25T00:20:06.267 に答える
1

CxImage(C ++画像処理および変換ライブラリ)もご覧ください。

于 2011-03-25T00:57:40.693 に答える
0

あなたはPaintlibを見ることができます

于 2011-03-25T08:43:02.947 に答える
0

ITKは画像処理用の優れたライブラリです。を使用して RGB をグレースケールに変換できますitk::RGBToLuminanceImageFilter

于 2011-03-25T12:51:12.437 に答える
0

Cimgを使用してそれを行う大まかな手順は次のようになります。

#include "CImg.h"
using namespace cimg_library;
...
{
...
CImg<unsigned char> image("source.jpg") //[load jpg][2] needs ImageMagick
cimg_for(img,ptr,float) { *ptr=0; }      //[Loop][3] over every pixel, eg this method equivalent to 'img.fill(0);'
save_jpeg (const char *const filename, const unsigned int quality=100) //[save as a jpg][4] 
... 
}
  • Cimgはそのデータを単純な配列として保存します。
  • CImg変数は、画像を表すオブジェクトです。
于 2011-03-25T02:08:29.340 に答える