Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用imshow opencv将图像拟合到屏幕_C++_Opencv_Imshow - Fatal编程技术网

C++ 使用imshow opencv将图像拟合到屏幕

C++ 使用imshow opencv将图像拟合到屏幕,c++,opencv,imshow,C++,Opencv,Imshow,我想在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 "open

我想在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
}
#包括
#包括
#包括
#包括
#包括
#包括“opencv2/opencv.hpp”
#包括
使用名称空间cv;
使用名称空间std;
int main()
{
Mat image=imread(“/Users/rafikgouiaa/Qt/projects/MakeVideo/build MakeVideo-Desktop\u Qt\u 5\u 0\u 2\u clang\u 64bit-Debug/im.jpg”);
namedWindow(“显示框”,CV\u窗口\u自动调整大小);
imshow(“显示框”,图像);
等待键(0);
返回0
}

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

要解决此问题,可以先将图像大小调整为较小的大小。像这样:

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);

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

namedWindow("Display frame", WINDOW_NORMAL)
在表演之前

要设置所需的窗口大小,请致电

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

有关更多详细信息,请参见

您需要将CV\u WINDOW\u OPENGL改为CV\u WINDOW\u AUTOSIZE

我补充说,将namedWindow的第二个参数设置为WINDOW\u NORMAL(与WINDOW\u AUTOSIZE相反)至关重要。否则,将不会调整窗口的大小。使用window_NORMAL不会缩放图像以适应窗口或屏幕。正如这个答案所说,我必须调整图像的大小。你确定吗?我检查过了,它不工作。