运行提供的代码时,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;
}
我希望图像显示在标题为“显示窗口”的窗口中,该窗口确实显示,但是它只是一个空的灰色框。
答案 0 :(得分:0)
指定图像的绝对路径,并检查其是否正常工作。
如果要从Visual Studio运行应用程序,则需要指定当前工作目录与图像的位置相同。
您还可以使用ifstream
检查文件是否存在
inputStream.open("887.jpg");
if (inputStream.fail()) {
// bad file path
}
只是为了确认是否正确设置了当前工作目录。
答案 1 :(得分:0)
好的,对此感到抱歉。我试图显示的图像非常大,只有可见的部分是灰色的图像角。一旦我按比例缩小图像,看起来就很好了。非常抱歉浪费大家的时间。