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

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

被折叠的 条评论
为什么被折叠?



