题目是这样的,现在有一个 rawdata.dat 文件,里面包含了 许多张 yuyv各式的图片。图片大小是768*576  24位色的。需要用C++写一个程序 把这些图片按顺序显示出来。
能不能把具体编程的步骤还有需要用到的主要的函数都写出来。
这个rawdata文件 好像还有header信息在里面。一般这种从视频上捕捉到的文件header都是什么内容啊?

解决方案 »

  1.   

    YUYV序列 貌似是ITU的BT601/656的视频格式,4:2:2的D1的图像有没有header,你可以自己计算一下,即比较一下.dat文件的大小和720*576(应该不是lz说的768*576)*12(每个象素点对应12bit数据)*有多少帧图像的乘积结果,看看大小是否一致要将图像显示在PC显示器上,需要将YUV色度空间的转换到RGB色度空间,具体的转换矩阵网上有。但是应该首先将4:2:2的插值为4:4:4的,即对于每一个像素都要有一个Y、U、V才行我嘴笨,给别人讲东西一向生涩难懂T_T,不知道lz明白了没有
      

  2.   

    能不能讲的详细一点,我了解yuyv/RGB的转换方法,但是其他的就不太清楚了,能不能给个思路
      

  3.   

    存储的是YUYV格式的?
    如果用Overlay平面就可以直接显示,如果需要用GDI显示,那么需要转换成RGB。
    具体的转换代码可以参考开源项目xvid中的相关代码。
      

  4.   

    因为这个并不涉及视频数据的压缩解压缩,因此个人认为没有必要看xvid中的相关代码,只要能明白一些概念,加上有图像编程的基础,自己写代码应该难度不大。如果我没估计错的话,rawdata.dat是从标准图像序列中提取出来的。
    首先要把整个数据划分开,即分成一帧一帧的。
    这些标准图像序列一帧是720*576个象素点,每四个象素点对应4个Y和2个U,2个V(色度分量少是为了减小视频数据量),然后在真正传输的时候按照…Y U Y V Y U…的顺序传送。所以接下来应该将缺少的U、V值补齐,使得每一个像素点都能有一个Y,一个U,一个V。这一步称为色度插值。最简单的办法是在没有UV的象素点处,复制临近象素点的UV值。
    当插值工作完成了以后,你就可以对每一个象素点的YUV值用转换矩阵转换成RGB值,R、G、B每个值都是8位(因此是3*8 = 24位)。
    然后就是将RGB数据按照720*576的大小显示出来基本上我能想到的是这些步骤。lz最好对数字视频的理论知识有所了解。
      

  5.   

    具体的编程,用什么样的函数,写什么样的代码。我是编程菜鸟,不太能帮得上忙了(我才是可怜的一个小三角阿T_T)。lz加油
      

  6.   

    我发现rawdata 中包含header,谁知道这个header 里面都是什么信息,有多大。现在我怎么样才能把图像信息分离出来。  而且数据尾部也有附加信息,这些信息是什么?
      

  7.   

    raw data?怎么又还有header?如果有header的,那么只有问写这个文件的人了。
      

  8.   

    楼上的朋友,我能把rawdata 发给你帮我看看吗?我给你发消息。
      

  9.   

    你可以用ULtraEdit打开.dat文件
    如果有header的话,你应该能在开始的部分看到大量的00