【问题标题】:opencv - resizeWindow do nothing?opencv - resizeWindow 什么都不做?
【发布时间】:2013-03-31 19:53:04
【问题描述】:

我尝试了一些变化,但似乎 resizeWindow 没有做任何事情。 我给出了简单的代码示例,结果是两个窗口大小相同,尽管它应该是不同的大小。

Mat m = imread("somePath",CV_LOAD_IMAGE_COLOR); 
namedWindow("aa",CV_WINDOW_NORMAL);
namedWindow("bb",CV_WINDOW_NORMAL);
imshow("aa",m);
imshow("bb",m);
resizeWindow("aa",400,400);
resizeWindow("bb",800,800);
waitKey(0);

我在 ubunto 12.04 和 opencv 2.4.3 上使用 eclipse-cdt。

  • 我尝试调试它,进入函数,但我没有成功添加 highGui 模块作为外部源,我得到一些 h 文件丢失的编译错误。

【问题讨论】:

    标签: opencv resize window


    【解决方案1】:

    确保安装了带有 Qt 后端支持的 OpenCV。

    引用the documentation of namedWindow()(重点是我的):

    flags – 窗口的标志。 目前唯一支持的标志是 CV_WINDOW_AUTOSIZE。如果设置了这个,窗口大小会自动 调整以适合显示的图像(请参阅 imshow() ),并且您不能 手动更改窗口大小。

    ...

    注意:Qt 后端支持附加标志:CV_WINDOW_NORMAL 或 CV_WINDOW_AUTOSIZE:CV_WINDOW_NORMAL 允许你调整窗口大小, 而 CV_WINDOW_AUTOSIZE 会自动将窗口大小调整为 适合显示的图像(请参阅 imshow() ),并且您无法更改 手动设置窗口大小。

    CV_WINDOW_AUTOSIZE 很可能是您系统上唯一受支持的标志。 Documentation for resizeWindow 表示只有创建的窗口没有 CV_WINDOW_AUTOSIZE 标志可以调整大小。您的选择是:

    • 安装带有 Qt 后端的 OpenCV,或者
    • 使用resize() 函数在显示之前调整图像大小。

    【讨论】:

      【解决方案2】:

      以下代码 sn-p 对我有用:

      namedWindow("Final", 0);
      resizeWindow("Final", 500,500);
      

      “只有没有 CV_WINDOW_AUTOSIZE 标志的窗口可以调整大小。”

      参考号:http://docs.opencv.org/modules/highgui/doc/user_interface.html#resizewindow

      【讨论】:

        【解决方案3】:

        我也遇到过这个问题,底线是 OpenCV 窗口有一个最小尺寸,而您尝试创建的两个窗口都低于它。我有理由确定您的图片区域也被剪裁了,可能带有灰色或其他虚假信息。

        【讨论】:

        • 正如我所说,我尝试了一些变化。我修复了代码,因此尺寸为 400 和 800,没有任何变化。
        • 取决于您的安装,请参阅下面的帖子。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-08
        • 2016-12-24
        • 2017-04-18
        • 2011-08-03
        • 2014-05-11
        • 2014-09-10
        相关资源
        最近更新 更多