C ++、画像をロードして、特定の色の画素をカウントする方法
質問
ここに私の問題だ:
私はその画素を横切るC ++に画像をインポートする方法を探して、カウンタをインクリメントする特定の色の画素が発見されるたびに。
私はいくつかの研究を行ってきたが、私は特に便利何も見つかっていません。 悪魔は良いオプションのようなルックスをを、私は必ずどこから始めればありませんよ。
ここでは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);
ん誰開始する場所にいくつかのヒントがありますか?
おかげ
EDIT いくつかの追加情報:私は、Windows 7を使用していますし、すべての画像が.pngsある
EDIT2 私は実際に、現在のピクセルの色を見つける除いて、すべての作業を持っています。現在、私はこれを使用しています:
int blue = ((uchar *)(img->imageData + pixelX*img->widthStep))[pixelY*img->nChannels + 0];
しかし、それは動作しません、と私はそれがどのように動作するか見当がつかない。私は、私が理解できることがこのことについて何かを見つけることができませんでした。ある画素のRGB値を見つける方法についての右方向へのでしたが、誰のポイントを私に?
EDIT3 やりました!これは、同じようなことをやろうとして見つけた誰のために、コードの私の残りの質問のほとんどと公平なビットは<のhref = "https://stackoverflow.com/questions/3851604/c-access-violation-usingを見つけることができます-opencvツー取得-RGB値-のピクセル ">ここを。助けてくれてありがとう!
解決
Definiately OpenCVののを見てみましょう移動するには、その後OpenCVのは、あなたがより多くのコンピュータビジョンのタスクを実行できるようになります。そして、ブースト::ファイルシステムのに使用しますコード「ディレクトリ内の各画像のために」を実行ます。
CV ::比較の機能は基本的にないこと注すでにあなたのための仕事の半分は...私はあなたがいることを読んで、OpenCVのAPIを活用して楽しむことができます。
他のヒント
あなたがOpenCVのを見てみる必要があります。
は、プラットフォームと画像フォーマットに依存します。 Windowsでは、BMP画像は(私は。すなわちAPIに)ネイティブにサポートされています。 ImageMagickには、かなり普遍的、クロスプラットフォームライブラリですそこに任意の形式についてはかかりますが、それの重いです。 Qtは同様に、いくつかの画像処理を有する - 最も一般的な形式に限定
。