簡體   English   中英

使用OpenCV計算黑色像素

[英]Count the black pixels using OpenCV

我在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;
}

到目前為止,這段代碼是非常基本的,但它實現了它現在應該做的事情。 稍后會進行一些調整以清理它:)

您可以使用countNonZero計算圖像countNonZero黑色(> 0)的像素數。 如果要計算黑色(== 0)像素的數量,則需要從圖像中的像素數(圖像寬度*高度)中減去非黑色像素的數量。

這段代碼應該有效:

int TotalNumberOfPixels = bwImage.rows * bwImage.cols;
int ZeroPixels = TotalNumberOfPixels - countNonZero(bwImage);
cout<<"The number of pixels that are zero is "<<ZeroPixels<<endl;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM