0

これが私の問題です:

画像をC++にインポートし、そのピクセルをトラバースして、特定の色のピクセルが見つかるたびにカウンターをインクリメントする方法を探しています。

私はいくつかの調査を行いましたが、特に有用なものは見つかりませんでした。 DevILは良いオプションのように見えますが、どこから始めればよいかわかりません。

これが、私がやろうとしていることをうまく説明しているC ++/pythonの擬似コードです。

for image in folder:

    A = 0;
    B = 0;

    for pixel in image:

        if (pixel == colourA) {A++}
        if (pixel == colourB) {B++}

    //Output the count of colours for each image
    outputToFile(A, B);

どこから始めればいいのか、誰かアドバイスはありますか?

ありがとう

編集いくつかの追加情報:私はWindows 7を使用しており、すべての画像は.pngです。

EDIT2現在のピクセルの色を実際に調べることを除いて、すべてが機能しています。現在私はこれを使用しています:

int blue = ((uchar *)(img->imageData + pixelX*img->widthStep))[pixelY*img->nChannels + 0];

しかし、それは機能しません、そして私はそれがどのように機能するのか分かりません。私はこれについて私が理解できることを何も見つけることができませんでした。特定のピクセルのRGB値を見つける方法について誰かが私を正しい方向に向けることができますか?

Edit3完了!これが同様のことをしようとしていることに気付いた人は、私の残りの質問のほとんどとかなりのコードをここで見つけることができます。助けてくれてありがとう!

4

4 に答える 4

2

OpenCVをご覧ください。

于 2010-10-01T00:23:38.310 に答える
0

プラットフォームと画像形式によって異なります。Windowsでは、BMPイメージはネイティブに(つまり、APIで)サポートされます。ImageMagickはクロスプラットフォームのライブラリであり、かなり普遍的であり、あらゆる形式を取りますが、重いものです。Qtにはいくつかの画像処理もあります-最も一般的な形式に制限されています。

于 2010-10-01T00:21:20.760 に答える
0

SDLにはいくつかの便利なピクセル操作機能があります。

http://www.libsdl.org/

とてもきれいです。

于 2010-10-01T00:22:46.903 に答える
0

OpenCVをぜひご覧ください。移動するスペースがさらに必要になった場合、 OpenCVを使用するとさらに多くのコンピュータービジョンタスクを実行できるようになります。そして、boost::filesystemを使用して'dir内の各画像に対して'コードを実行します。

cv :: compare関数は、基本的にすでに半分の作業を実行していることに注意してください...それを読んで、OpenCVAPIの活用を楽しんでください。

于 2010-10-01T00:32:17.653 に答える