C++ imshow 让显示的图片能拖动窗口大小,并等比例显示
时间: 2024-03-02 12:53:23 浏览: 141
在 C++ 中使用 OpenCV 库的 imshow 函数显示图片时,默认情况下窗口大小是固定的,无法进行拖动调整。但是可以通过设置窗口属性来实现窗口大小可调整。同时,为了保证图片显示效果,可以设置窗口等比例显示。具体实现方式如下:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat img = imread("image.jpg");
namedWindow("image", WINDOW_NORMAL); // 设置窗口属性为可调整大小
imshow("image", img);
resizeWindow("image", img.cols, img.rows); // 设置窗口初始大小与图片大小相同
while (waitKey(1) != 'q') // 按下 q 键退出循环
{
int key = waitKey(1);
if (key == 'r') // 按下 r 键重置窗口大小
{
resizeWindow("image", img.cols, img.rows);
}
}
return 0;
}
```
在上述代码中,通过 namedWindow 函数设置窗口属性为 WINDOW_NORMAL,即可调整大小。同时,在程序中使用了一个 while 循环,通过不断等待键盘输入来检测用户是否按下了 q 键,以实现程序的退出。如果用户按下了 r 键,则使用 resizeWindow 函数将窗口大小重置为图片大小。这样,即可实现窗口大小可调整,并等比例显示图片的效果。
需要注意的是,如果窗口大小调整过小,可能会导致图片无法完全显示或显示效果不佳。建议在设置窗口大小时,保证图片能够完整显示,同时不要太小,以免影响显示效果。
阅读全文