相关疑难解决方法(0)

如何处理RGB到YUV的转换

公式说:

Y = 0.299 * R + 0.587 * G + 0.114 * B;

U = -0.14713 * R - 0.28886 * G + 0.436 * B;

V = 0.615 * R - 0.51499 * G - 0.10001 * B;
Run Code Online (Sandbox Code Playgroud)

例如,如果U变量变为负数怎么办?

U = -0.14713 * R - 0.28886 * G + 0.436 * B;
Run Code Online (Sandbox Code Playgroud)

假设R和G(1)的最大值和B = 0那么,我有兴趣在OpenCV中实现这个对流函数,那么,如何处理负值?使用浮动图像?无论如何请解释我,可能是我不明白的东西..

opencv image-processing yuv

17
推荐指数
2
解决办法
2万
查看次数

在OpenCV中将YUV转换为BGR或RGB

我有一个电视采集卡,有一个YUV格式的输入.我在这里看到过与此问题类似的其他帖子并试图尝试所有可能的方法,但它们都没有提供清晰的图像.目前最好的结果是使用OpenCV cvCvtColor(scr, dst, CV_YUV2BGR)函数调用.

我目前还没有意识到YUV格式,说实话让我感到困惑,因为它看起来像存储4个频道,但只有3个?我已经从捕获卡中包含了一张图像,希望有人能够理解我可能用来填补空白的内容.

YUV到BGR转换图像

Feed通过DeckLink Intensity Pro卡进入,并在Windows 7环境中使用OpenCV在C++应用程序中访问.

更新

我查看了有关此信息的维基百科文章,并尝试在我的应用程序中使用该公式.下面是从中收到输出的代码块.任何意见是极大的赞赏.

BYTE* pData;

    videoFrame->GetBytes((void**)&pData);

    m_nFrames++;

    printf("Num Frames executed: %d\n", m_nFrames);

    for(int i = 0; i < 1280 * 720 * 3; i=i+3)
    {
        m_RGB->imageData[i] = pData[i] + pData[i+2]*((1 - 0.299)/0.615);
        m_RGB->imageData[i+1] = pData[i] - pData[i+1]*((0.114*(1-0.114))/(0.436*0.587)) - pData[i+2]*((0.299*(1 - 0.299))/(0.615*0.587));
        m_RGB->imageData[i+2] = pData[i] + pData[i+1]*((1 - 0.114)/0.436);
    }
Run Code Online (Sandbox Code Playgroud)

尝试RGB转换

c++ windows opencv video-streaming

11
推荐指数
3
解决办法
5万
查看次数

标签 统计

opencv ×2

c++ ×1

image-processing ×1

video-streaming ×1

windows ×1

yuv ×1