20

我想在 Mac os X 13' 上使用 opencv 显示图像。图像大小为 1920 × 1080。当我运行此代码时,我只看到图像的一部分。我需要使图像适合屏幕。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include "opencv2/opencv.hpp"
#include<string.h>
using namespace cv;
using namespace std;

int main()
{
   Mat image=imread("/Users/rafikgouiaa/Qt/projects/MakeVideo/build-MakeVideo-    Desktop_Qt_5_0_2_clang_64bit-Debug/im.jpg");
   namedWindow( "Display frame",CV_WINDOW_AUTOSIZE);
   imshow("Display frame", image);
   waitKey(0);
   return 0
}
4

3 回答 3

36

如果您需要显示大于屏幕分辨率的图像,则需要调用

namedWindow("Display frame", WINDOW_NORMAL)

在imshow之前。

要设置所需的窗口调用大小,请

cv::resizeWindow("Display frame", WIDTH, HEIGHT);

有关详细信息,请参阅http://docs.opencv.org/modules/highgui/doc/user_interface.html#imshow

于 2015-04-14T09:30:14.390 回答
8

传递CV_WINDOW_AUTOSIZEnamedWindow()将使窗口大小自动调整以适合显示的图像。而你看到的部分图像可能是因为图像对于你的屏幕来说太大了。

要解决,您可以先将图像调整为更小的尺寸。像这样:

Mat image=imread("...");
resize(image, image, Size(image.cols/2, image.rows/2)); // to half size or even smaller
namedWindow( "Display frame",CV_WINDOW_AUTOSIZE);
imshow("Display frame", image);
于 2014-07-20T04:31:27.403 回答
0

你需要把 CV_WINDOW_OPENGL 代替 CV_WINDOW_AUTOSIZE

于 2017-06-22T13:41:54.973 回答