首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在opencv中使用Color_YUV2BGR实现YUV到BGR的错误转换

在opencv中使用Color_YUV2BGR实现YUV到BGR的错误转换
EN

Stack Overflow用户
提问于 2017-03-27 22:28:39
回答 1查看 2.2K关注 0票数 2

我希望将一组YUV值转换为BGR。我的代码如下:

代码语言:javascript
复制
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;

我得到的输出是- b: 125,g: 118,r: 0

但是预期的输出是b: 0,g: 112,r: 128。

有人能告诉我我哪里出了问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-28 00:05:32

如果您正在使用OpenCV2.4,则它是一个已知的问题

根据类似问题上的响应,有一个可能的工作:

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43057490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档