8

で働いておりopencv 2.4.0C++

RGB 画像を読み込んでグレースケールに変換し、新しい画像を保存する必要があるという演習をしようとしています。次のステップでは、グレースケール イメージをバイナリ イメージにして、そのイメージを保存します。これだけ働いています。

私の問題は、バイナリ イメージ内の黒いピクセルの数を数えることです。

これまで、私はウェブを検索し、本を調べてきました。私が見つけた最も便利な方法は次のとおりです。

int TotalNumberOfPixels = width * height;
int ZeroPixels = TotalNumberOfPixels - cvCountNonZero(cv_image);

しかし、これらの値を保存して で使用する方法がわかりませんcvCountNonZero()。カウントしたい画像をこの関数に渡すと、エラーが発生します。

int main()
{
    Mat rgbImage, grayImage, resizedImage, bwImage, result;

    rgbImage = imread("C:/MeBGR.jpg");
    cvtColor(rgbImage, grayImage, CV_RGB2GRAY);

    resize(grayImage, resizedImage, Size(grayImage.cols/3,grayImage.rows/4),
           0, 0, INTER_LINEAR);

    imwrite("C:/Jakob/Gray_Image.jpg", resizedImage);
    bwImage = imread("C:/Jakob/Gray_Image.jpg");
    threshold(bwImage, bwImage, 120, 255, CV_THRESH_BINARY);
    imwrite("C:/Jakob/Binary_Image.jpg", bwImage);
    imshow("Original", rgbImage);
    imshow("Resized", resizedImage);
    imshow("Resized Binary", bwImage);

    waitKey(0);
    return 0;
}

これまでのところ、このコードは非常に基本的なものですが、現時点で想定されていることを実行します。それをきれいにするために後でいくつかの調整が行われます:)

4

1 に答える 1