2012-02-28 106 views
1

我们使用directshow界面从视频流中捕捉图像。这些图像以固定大小的窗口呈现。directshow从哪里获取图像尺寸?

一旦我们捕获了一个图像,我们将它作为一个位图存储。在下游,我们有能力为图像添加注释,例如固定大小的字体。

在我们的桌面环境之一中,注释开始出现在它通常出现的大小的一半处。这意味着我们将文本合并到的图像的尺寸可能是两倍。

发生这种情况的系统是共享资源,因为某些未知个人在系统上安装了与我们的基线不同的软件。

我们有两种方法 - 第一种是重新映像系统以恢复默认的文本大小行为。第二个是弄清楚directshow如何管理图像尺寸,以便我们可以正确设置图像的缩放比例。

对directshow文献的调查表明,上述不是一项简单的任务。原来的工作是由另一个团队完成的,他们没有记录他们做了什么。任何人都可以指向我们想要处理的directshow对象的方向,以正确确定采样图像的大小吗?

回答

2

DirectShow - 作为一个框架 - 不直接处理解决方案。您的视频源(例如捕捉硬件)能够以您可能更改的某种分辨率提供视频馈送。您通常使用IAMStreamConfig,如Configure the Video Output Format中所述,以便选择捕获分辨率。

有时您不能影响捕捉分辨率,您需要对捕捉到的任何尺寸的图像进行重新采样。没有股票筛选器,但媒体基金会提供合适的Video Resizer DSP,它执行大部分任务。不幸的是,它不能顺利地适应DirectShow管道,因此您需要使用拟合和/或自定义过滤器来调整大小。

2

当过滤器在DirectShow中连接时,它们有一个AM_MEDIA_TYPE。在这里你会发现一个VIDEOINFOHEADERBITMAPINFOHEADER和这个头有一个biWidth和biHeight。 尝试手动构建FilterGraph(使用GraphEdit或GraphStudioNext)并检查这些字段。

+0

位图信息标题指示图像上我们遇到问题的分辨率大约是我们从系统正常工作的图像的一半。现在弄清楚为什么... – 2012-02-29 18:00:07