首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Opencv显示Y来自YUV

Opencv显示Y来自YUV
EN

Stack Overflow用户
提问于 2016-05-05 22:02:53
回答 1查看 4.8K关注 0票数 1

我试着提取和展示

YUV转换图像的Y通道

我的代码如下:

代码语言:javascript
复制
Mat src, src_resized, src_gray;

src = imread("11.jpg", 1);

resize(src, src_resized, cvSize(400, 320));

cvtColor(src_resized, src_resized, cv::COLOR_BGR2RGB);

/*
I've tried both with and without the upper conversion 
(mentioned here as bug 
http://stackoverflow.com/questions/7954416/converting-yuv-into-bgr-or-rgb-in-opencv 
 in an opencv 2.4.* version - mine is 2.4.10 )
*/

cvtColor(src_resized, src_gray, CV_RGB2YUV); //YCrCb

vector<Mat> yuv_planes(3);
split(src_gray,yuv_planes);

Mat g, fin_img;

g = Mat::zeros(Size(src_gray.cols, src_gray.rows),0);

 // same result withg = Mat::zeros(Size(src_gray.cols, src_gray.rows), CV_8UC1);

vector<Mat> channels;

channels.push_back(yuv_planes[0]);
channels.push_back(g);
channels.push_back(g);

merge(channels, fin_img);

imshow("Y ", fin_img);

waitKey(0);

return 0;

因此,我期待一幅灰色的图像显示发光。

相反,我得到一个B/G/R通道图像取决于(第一/第二/第三)的位置。

代码语言:javascript
复制
channels.push_back(yuv_planes[0]);

如下所示:

我遗漏了什么?(我计划使用亮度进行行/列之和,然后使用所获得的数据提取车牌)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-05 23:18:15

问题是只在一个通道中显示发光,而不是用它填充所有的通道。

如果其他人遇到同样的问题,只要改变

代码语言:javascript
复制
Mat g, fin_img;

g = Mat::zeros(Size(src_gray.cols, src_gray.rows),0);

vector<Mat> channels;

channels.push_back(yuv_planes[0]);
channels.push_back(g);
channels.push_back(g);

用所需的频道填满所有频道

代码语言:javascript
复制
Mat  fin_img;

vector<Mat> channels;

channels.push_back(yuv_planes[0]);
channels.push_back(yuv_planes[0]);
channels.push_back(yuv_planes[0]);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37061022

复制
相关文章

相似问题

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