7

我尝试了一些变化,但似乎 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 modoul 作为外部源,我得到一些 h 文件丢失的编译错误。
4

3 回答 3

8

以下代码片段适用于我:

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

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

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

于 2013-05-31T09:29:19.847 回答
4

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

从(重点是我的)的文档中namedWindow()引用:

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

...

注意:Qt 后端支持附加标志: CV_WINDOW_NORMAL 或 CV_WINDOW_AUTOSIZE:CV_WINDOW_NORMAL 使您能够调整窗口大小,而 CV_WINDOW_AUTOSIZE 自动调整窗口大小以适应显示的图像(请参阅 imshow() ),您不能手动更改窗口大小。

这可能CV_WINDOW_AUTOSIZE是您系统上唯一受支持的标志。文档resizeWindow说只有没有 CV_WINDOW_AUTOSIZE标志创建的窗口可以调整大小。您的选择是:

  • 使用 Qt 后端安装 OpenCV,或
  • 使用resize()函数在显示之前调整图像大小。
于 2013-05-31T13:24:05.003 回答
1

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

于 2013-04-09T13:14:05.853 回答