2013-01-16 3 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

나는 시도했다. 단일 채널의 값에 액세스하기위한 결과를 찾을 수 없습니다. 나는 rong을 찾고 있다고 생각한다. –

+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

안녕하세요, 죄송 합니다만, 최근에 파이썬을 너무 많이 사용하여 하하에 대해 잊어 버렸습니다. 코드 예제를 편집했습니다. 희망이 도움이됩니다. – lightalchemist

+0

감사합니다. :). 왜 당신이 그것을 'm [0]'이라고 주 었는지 temme하시기 바랍니다. –