posts - 109,  comments - 134,  trackbacks - 1

    这几天一个学生在调试视频捕捉程序的时候遇到了一个问题。他使用capGetVideoFormat函数获得视频的格式时,发现m_bmpinfo.bmiHeader.biBitCount为16,他认为这是表示16位的RGB格式。可是不管他是使用RGB565,还是RGB555格式进行转换时,发现转换后的YUV文件都是不对的。在我的Sony笔记本上运行他的程序,其中的m_bmpinfo.bmiHeader.biCompression的值为1498831189,这说明笔记本的摄像头所采集的数据的格式并不是普通的16位RGB数据,而是UYVY格式的。UYVY格式是YUV格式的一个变种,在网上可以找到详细的说明,在此就不赘述了。

    要想知道biCompression到底有多少种取值,可以参考一下:http://files.codes-sources.com/fichier.aspx?id=45735&f=src/org/hypik/webcamlib/codecs/Codecs.java。在这里详细的列出了各种视频压缩的编码。

 

    怎样才能知道自己的摄像头到底支持哪种格式的输出呢?可以使用capDlgVideoFormat函数: 

capDlgVideoFormat(m_wndVideo);

 

     这个函数会激活摄像头驱动的视频格式设置对话框,如下图所示。

 

    我的这个摄像头支持2种输出格式,一种是UYVY,另一种是YUV2。 如果将m_bmpinfo.bmiHeader.biCompression设置为这两种之外的值,再使用capSetVideoFormat改变输出格式,由于驱动程序不支持而不会获得成功。

posted on 2010-11-16 22:33 zealsoft 阅读(114) 评论(0) 编辑 收藏
<2010年11月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

昵称:zealsoft
园龄:7年3个月
粉丝:3
关注:0

搜索

 
 

常用链接

随笔分类(127)

随笔档案(109)

个人爱好

技术网站

积分与排名

  • 积分 - 116784
  • 排名 - 859

最新评论

阅读排行榜

评论排行榜

推荐排行榜