1

CImg の使用:ここで、個々のピクセルの RGB データを次のように変更できることを読みました。

CImg<float> img("filename.jpg");
// Change the (100,200) pixel to Red.
img(100,200,0,0) = 255; //R
img(100,200,0,1) = 0; //G
img(100,200,0,2) = 0; //B

img(100, 200, 0, 0)上記のスニペットがunsigned char *示すように、これは明らかに変数ではありません。上記のコードを実行すると、ビルド出力に「エラー C2106: '=' : 左オペランドは左辺値でなければなりません」というメッセージが表示されます。

潜在的な解決策は、生のピクセルデータを最初のパラメーターとして受け取るコンストラクターの別のバージョンを使用することですが、CImgコンストラクターを介して実行する前にデータをフォーマットする方法に関する情報が見つかりません-最初のパラメーターは記述されていますCImg.h の9671行目のテンプレートとして。

どんな助けでも大歓迎です。私はしばらくこれに取り組んできました。

4

2 に答える 2

1

表現img(100,200,0,0)はaではunsigned char*なくunsigned char&、大きな違いを生むaです。もちろんimg(100,200,0,0) = value、問題なく書くことができます(img変数がの場合を除くconst)、私はいつもそれを使用しています。また、3 番目の引数は常に0であるため、この場合は省略できるため、 と書くことができることに注意してくださいimg(x,y,0)=255; img(x,y,1)=1; img(x,y,2)=1;

CImg パッケージで提供されている例を見ると、多くのコードでCImg<T>::operator()このように使用されていることがわかります。うまくいけば !

于 2013-07-02T08:00:01.097 に答える