web-dev-qa-db-fra.com

Ajuster une image à l'écran à l'aide de imshow opencv

Je souhaite afficher une image en utilisant opencv sur Mac os X 13 '. La taille de l'image est de 1920 × 1080. Lorsque j'exécute ce code, je ne vois qu'une partie d'une image. J'ai besoin d'adapter l'image à l'écran.

#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
}
15
BetterEnglish

Si vous devez afficher une image plus grande que la résolution d'écran, vous devrez appeler

namedWindow("Display frame", WINDOW_NORMAL)

avant l'imshow.

Pour définir la taille souhaitée de l'appel de fenêtre, veuillez

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

Pour plus de détails, voir http://docs.opencv.org/modules/highgui/doc/user_interface.html#imshow

26
Temak

Si vous passez CV_WINDOW_AUTOSIZE À namedWindow() , la taille de la fenêtre s'ajustera automatiquement pour s'adapter à l'image affichée. Et vous voyez qu'une partie de l'image est probablement parce que l'image est trop grande pour votre écran.

Pour travailler, vous pouvez d'abord redimensionner l'image à une taille plus petite. Comme ça:

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

Vous devez mettre CV_WINDOW_OPENGL à la place CV_WINDOW_AUTOSIZE

0
ARCAON