【问题标题】:Mirrored image when capturing from webcam从网络摄像头捕获时出现镜像
【发布时间】:2013-04-23 20:11:32
【问题描述】:

我正在使用基于 http://msdn.microsoft.com/en-us/library/windows/desktop/dd407288(v=vs.85).aspx#example_code 示例的代码从网络摄像头捕获图像

除了一件奇怪的事情之外,它工作正常:图像沿其 x 轴镜像,意味着它是自上而下的(但未旋转 180 度)。

那么这怎么会发生呢?是否存在可能导致此类行为的 DirectShow 选项?

【问题讨论】:

  • 在相机上启用了镜像,或者驱动程序中的错误。或者,您的过滤器图表捕获了一些奇怪的第三方错误过滤器,这些过滤器会在图像显示之前改变图像。
  • 令人惊讶的是它发生在两个非常不同的相机上,所以我猜这不是驱动程序问题......
  • 可能是一个特性而不是一个错误:SampleGrabber->GetCurrentBuffer() 返回的数据的图像方向是什么?可能最后一行在内存中排在第一位吗?这就解释了为什么它是自下而上的……
  • 哦,我以为它是围绕另一个轴镜像的...

标签: windows video webcam directshow image-capture


【解决方案1】:

RGB 帧通常具有相反的行顺序,从下到上。规则是:

  • RGB 像素格式
    • BITMAPINFOHEADER::biHeight > 0 - 从下到上的行
    • BITMAPINFOHEADER::biHeight
  • YUV 像素格式
    • 不管BITMAPINFOHEADER::biHeight 符号(正负均有效)- 从上到下的行

虽然biHeight 的正值和负值都有效,但负值的传播和支持较少。许多过滤器只会拒绝具有负值的格式。

【讨论】:

    猜你喜欢
    • 2013-02-09
    • 2013-01-18
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多