gpt4 book ai didi

来自 YUV 的 Opencv imshow Y

转载 作者:太空宇宙 更新时间:2023-11-03 22:51:40 25 4
gpt4 key购买 nike

我正在尝试提取和显示

YUV 转换图像的 Y channel

我的代码如下:

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 channel 图像

channels.push_back(yuv_planes[0]);

如图所示: Result

我错过了什么? (我打算用亮度做行/列的求和,然后用得到的数据提取车牌)

最佳答案

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

如果其他人遇到同样的问题,只需更改

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);

到(用想要的 channel 填充所有 channel )

Mat  fin_img;

vector<Mat> channels;

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

关于来自 YUV 的 Opencv imshow Y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37061022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com