2017-03-27 11 views
1

YUV 값의 단일 세트를 BGR로 변환하려고합니다. 125 g : 118, R : 0opencv에서 Color_YUV2BGR을 사용하여 YUV에서 BGR로 잘못 변환했습니다.

하지만 예상되는 출력을 b 0, g : 112, R 128 - B

yuv = [100, 50, 150] 
cv::Mat bgr_mat; 
cv::Mat yuv_mat(1,1,CV_8UC3,cv::Scalar(yuv[0],yuv[1],yuv[2])); 
cv::cvtColor(yuv_mat,bgr_mat,cv::COLOR_YUV2BGR); 
cv::Vec3b bgr = bgr_mat.at<cv::Vec3b>(0,0); 
cout << "b: " << (float)bgr.val[0] << " , g: " << (float)bgr.val[1] << " , r: " << (float)bgr.val[2] << endl; 

I 얻을 출력은 다음과 같이 내 코드는

누군가 내가 잘못 가고 있다고 말할 수 있습니까?

+0

기대하는 가치를 얻기 위해 사용하는 소스는 무엇입니까? –

+0

@MarkRansom https://www.mikekohn.net/file_formats/yuv_rgb_converter.php – vacky

+0

@vacky OpenCv 2.4를 사용하고 있습니까? Temak 대답을 참조하십시오 http://stackoverflow.com/questions/7954416/converting-yuv-into-bgr-or-rgb-in-opencv – Rama

답변

1

당신을 OpenCV 2.4을 사용하는 경우 그것은 알려진 issue

가에 응답 주문에 따라입니다 유사한 question 가능한 workarond 있습니다 :

yuv = [100, 50, 150] 
cv::Mat bgr_mat; 
cv::Mat yuv_mat(1,1,CV_8UC3,cv::Scalar(yuv[0],yuv[1],yuv[2])); 
cv::cvtColor(yuv_mat,bgr_mat,cv::COLOR_YUV2BGR); 
cv::cvtColor(bgr_mat,bgr_mat,cv::COLOR_BGR2RGB); 
cv::Vec3b bgr = bgr_mat.at<cv::Vec3b>(0,0); 
cout << "b: " << (float)bgr.val[0] << " , g: " << (float)bgr.val[1] << " , r: " << (float)bgr.val[2] << endl; 

출력 :

b는 : 0, g : 118, r : 125

+0

답변 해 주셔서 감사합니다. – vacky