我有一块电视采集卡,它的信号是以YUV格式输入的。我在这里看到了与这个问题类似的其他帖子,并试图尝试所有可能的方法,但都没有提供清晰的图像。目前,最好的结果是用OpenCV的
cvCvtColor(scr, dst, CV_YUV2BGR)
函数调用。
我目前还不知道YUV格式,说实话,它让我有点困惑,因为它看起来像是存储了4个通道,但其实只有3个?我附上了一张来自采集卡的图像,希望有人能明白可能发生了什么,我可以用它来填补空白。
饲料是通过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);