OpenCV4 Imshow函数打开一个空的灰色框

时间:2019-05-30 14:01:29

标签: c++ visual-studio opencv

运行提供的代码时,imshow()将打开一个窗口,但这只是一个空的灰色窗口。代码成功执行(不会触发!image.data检查。)imwrite()函数确实将图像成功写入文件,因此我认为读取图像没有问题。

我还尝试过先打开一个命名窗口,然后在该窗口中调用imshow,但这也无济于事。

似乎其他一些人在此站点上遇到此问题。我浏览了答案并尝试了解决方案,但没有任何效果。我也找不到使用c ++的opencv 4.0的人。

#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#include <string>

using namespace std;
using namespace cv;

int main() {
    Mat image;
    image = imread("./887.jpg");
    if (!image.data)
    {
        cout << "Could not open or find the image" << std::endl;
        return -1;
    }

    imwrite("test.jpg", image);
    waitKey(1);
    imshow("Display window", image);                   // Show our image inside it.
    waitKey(0);


    return 0;
}

我希望图像显示在标题为“显示窗口”的窗口中,该窗口确实显示,但是它只是一个空的灰色框。

2 个答案:

答案 0 :(得分:0)

指定图像的绝对路径,并检查其是否正常工作。

如果要从Visual Studio运行应用程序,则需要指定当前工作目录与图像的位置相同。

您还可以使用ifstream检查文件是否存在

inputStream.open("887.jpg");
if (inputStream.fail()) {
    // bad file path
}

只是为了确认是否正确设置了当前工作目录。

答案 1 :(得分:0)

好的,对此感到抱歉。我试图显示的图像非常大,只有可见的部分是灰色的图像角。一旦我按比例缩小图像,看起来就很好了。非常抱歉浪费大家的时间。