我是靠谱客的博主 激情朋友,最近开发中收集的这篇文章主要介绍OpenCV全屏显示图像H和W各有1像素的空白解决方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

opnecv全屏显示图像的demo如下:

#include <opencv/cv.h>  
#include <opencv/highgui.h>  
  
using namespace cv;  
using namespace std;  

int main()  
{  
    Mat src = imread("Black.jpg",1);  
    imshow("src",src);  
    namedWindow("FullScreen",CV_WINDOW_NORMAL);  
    setWindowProperty("FullScreen", CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN );  
    imshow("FullScreen",src);  
    waitKey();  
} 

但是全屏后的第一行和第一列会有一条白边框。

去除白边框方法如下:

1.修改opencvsourcesmoduleshighguisrcwindow_w32.cpp文件中的函数:

static RECT icvCalcWindowRect( CvWindow* window ) //978行
将末4行注释掉:

/* Calculatess the window coordinates relative to the upper left corner of the mainhWnd window */
static RECT icvCalcWindowRect( CvWindow* window )
{
    const int gutter = 1;
    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;

    return rect;
}
2. 重新编译Opencv生成新的highgui_xxx.dll和highgui_xxxd.dll,将原来的替换掉就可以了。替换目标位置取决于使用的bin,例如,我当前的替换目标位置是C:Program FilesOpenCV249opencvbuildx86vc11bin。
参考:

http://blog.csdn.net/yangtrees/article/category/1106771

http://www.cnblogs.com/jhzhu/p/3216840.html

最后

以上就是激情朋友为你收集整理的OpenCV全屏显示图像H和W各有1像素的空白解决方法的全部内容,希望文章能够帮你解决OpenCV全屏显示图像H和W各有1像素的空白解决方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部