当opencv视频画面设置为全屏时,四周有白色边框问题完美解决方案

本文档记录了在使用OpenCV4.1.0在Windows10系统中全屏显示视频时遇到的画面四周有白色边框的问题。通过深入研究并修改`opencvmoduleshighguisrcwindow_w32.cpp`文件中的`icvCalcWindowRect`函数,将`const int gutter = 0`改为`const int gutter = 1`,并在返回前增加`rect.bottom += 2; rect.right += 2;`,解决了边框问题。经过编译验证,已实现完美全屏显示。

用opencv显示视频时,做了一个全屏,但是发现全屏后,画面四周有白色的边框,在网上看了下需要修改源码,但是参照修改后并没有解决,不知道是因为版本还是什么原因,经过探索后,终于完美解决,所以记录一下,一来方便自己,二来也方便大家
opencv版本: 4.1.0
操作系统: window10专业版
修改源文件 window_w32.cpp 路径:opencv\modules\highgui\src下

找到函数 static RECT icvCalcWindowRect( CvWindow* window )
第一处修改:
const int gutter = 0修改为const int gutter = 1
第二处修改:
在最后面 return rect;前面增加rect.bottom += 2; rect.right += 2;
修改后的函数整个方法体如下:

    const int gutter = 0;
    RECT crect, trect, rect;

    assert(window);

    GetClientRect(window->frame, &crect);
    if(window->toolbar.toolbar)
    {
        GetWindowRect(window->toolbar.toolbar, &trect);
        icvScreenToClient(window->frame, &trect);
        SubtractRect( &rect, &crect, &trect);
    }
    else
        rect = crect;

    rect.top += gutter;
    rect.left += gutter;
    rect.bottom -= gutter;
    rect.right -= gutter;

    rect.bottom += 2;
    rect.right += 2;

    return rect;

完成后重新编译即可,网上的方法只有第一处修改,我照做后还有白色边框,不能完全消除,增加第二处修改后完美解决.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值