【问题标题】:Fitting an image to screen using imshow opencv使用 imshow opencv 将图像拟合到屏幕上
【发布时间】:2014-09-10 14:49:16
【问题描述】:

我想在 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
}

【问题讨论】:

    标签: c++ opencv imshow


    【解决方案1】:

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

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

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

    【讨论】:

    • 使用 WINDOW_NORMAL 没有缩放图像以适应窗口或屏幕。正如这个答案所说,我不得不调整图像的大小。
    【解决方案2】:

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

    namedWindow("Display frame", WINDOW_NORMAL)
    

    在imshow之前。

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

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

    更多详情见http://docs.opencv.org/modules/highgui/doc/user_interface.html#imshow

    【讨论】:

    • 我补充说,namedWindow 的第二个参数设置为 WINDOW_NORMAL(而不是 WINDOW_AUTOSIZE)至关重要。否则,窗口不会调整大小。
    【解决方案3】:

    你需要用 CV_WINDOW_OPENGL 代替 CV_WINDOW_AUTOSIZE

    【讨论】:

    • 你确定吗?我查了,还是不行。
    猜你喜欢
    • 2013-12-31
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 2021-12-05
    • 2016-08-09
    • 1970-01-01
    • 2020-01-16
    • 2017-03-22
    相关资源
    最近更新 更多