2013-01-16 128 views
3

我將圖像從rgb轉換爲YUV。現在我想單獨找到亮度通道的平均值。你能幫我告訴我怎麼能做到這一點嗎?此外,有沒有一種方法可以確定圖像由多少個通道組成?單通道的平均值

回答

3

Image.channels()將爲您提供任何圖像中的通道數量。請參閱OpenCV文檔。

多種渠道可以如下訪問:

 img.at<Vec3b>(i,j)[0] //Y 
     img.at<Vec3b>(i,j)[1] //U 
     img.at<Vec3b>(i,j)[2] //V 
+0

我試過了。但我無法找到訪問單個頻道值的結果。我想我正在尋找榮。 –

+1

檢查編輯.. –

14

你可以這樣做:

#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <stdio.h> 

using namespace cv; 

int main(void) 
{ 
    vector<Mat> channels; 
    Mat img = imread("Documents/forest.jpg"); 
    split(img, channels); 
    Scalar m = mean(channels[0]); 
    printf("%f\n", m[0]); 

    return 0; 
} 
+0

std :: vector rgbChannels(3); cv :: split(inputImage,rgbChannels); 是不是格式?而且,m的數據類型應該是什麼?我面臨着問題。你可以幫我嗎。? –

+0

嗨,道歉,最近我一直在使用Python太多,我忘記了類型哈哈。我編輯了代碼示例。希望這可以幫助。 – lightalchemist

+0

感謝您的編輯。 :)。請問你爲什麼要把它作爲'm [0]'? –