none
directshow 改变视频尺寸比例 RRS feed

  • 问题

  • 上次在这边发了个帖子问如果做图像处理的Filter,现在图像处理已经可以用了。可是由于是对图像进行几何变换所以处理前的图像长宽与处理之后的长宽有点不同如处理前是320*240处理后是640*120或则其他,我曾经尝试着通过 m_pOutPut->SetMediaType(&mt)来改变长宽发现没啥效果。不知道有没有人有做过类似的,希望大家给点意见。
    2010年12月27日 0:41

答案

  • Hi ,

    我们可以使用 BITMAPINFOHEADER 中的biWidthbiHeight来修改采集视频的高和宽。

     

       AM_MEDIA_TYPE * pmt = mmt;
       VIDEOINFOHEADER * pvih = (VIDEOINFOHEADER*) pmt->pbFormat;
        pvih->bmiHeader.biHeight=640;  //
    修改采集视频的高为640
        pvih->bmiHeader.biWidth=120;   //
    修改采集视频的宽为120
        pmt->pbFormat = (unsigned char *) pvih;
        pConfig->SetFormat(pmt);   //
    重新设置参数

     AM_MEDIA_TYPE 结构定义媒体格式:http://msdn.microsoft.com/en-us/library/dd373477(VS.85).aspx

    VIDEOINFOHEADER 定义位图和视频图像的颜色信息,此结构中包含了BITMAPINFOHEADER结构,这个结构定义了位图的大小。

     

    如果您解决了问题,请把有用的回答标记为答案。

    谢谢,

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2010年12月28日 4:02
    版主

全部回复

  • Hi ,

    我们可以使用 BITMAPINFOHEADER 中的biWidthbiHeight来修改采集视频的高和宽。

     

       AM_MEDIA_TYPE * pmt = mmt;
       VIDEOINFOHEADER * pvih = (VIDEOINFOHEADER*) pmt->pbFormat;
        pvih->bmiHeader.biHeight=640;  //
    修改采集视频的高为640
        pvih->bmiHeader.biWidth=120;   //
    修改采集视频的宽为120
        pmt->pbFormat = (unsigned char *) pvih;
        pConfig->SetFormat(pmt);   //
    重新设置参数

     AM_MEDIA_TYPE 结构定义媒体格式:http://msdn.microsoft.com/en-us/library/dd373477(VS.85).aspx

    VIDEOINFOHEADER 定义位图和视频图像的颜色信息,此结构中包含了BITMAPINFOHEADER结构,这个结构定义了位图的大小。

     

    如果您解决了问题,请把有用的回答标记为答案。

    谢谢,

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2010年12月28日 4:02
    版主
  • 您好,我按照您的建议去做,但还是不行,具体描述如下:

    Width = 800, Height = 600,设置生效

    Width = 600,Height = 800,设置无效,出来的图片是Default尺寸

    是不是驱动里边需要注意些什么?DirectShow不会自动做裁剪和缩放吗?

    期待您的答复,谢谢。

    2012年3月5日 4:14