我正在阅读学习简历这本书,我遇到了第一个例子并遇到了这个问题
使用 OPENCV 3.0.0 和 VS 2013,添加并检查了所有库。
代码如下
#include "opencv2/highgui/highgui.hpp"
int main( int argc, char** argv)
{
IplImage* img = cvLoadImage(argv[1]);
cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE);
cvShowImage("Example1", img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("Example1");
}
所以在编译或构建之后,我得到一个名为 Example1 的窗口,它是灰色的,窗口中没有图像。
这是正确的吗?或者我应该得到什么?
最佳答案
您没有正确加载图像,即 argv[1]
的路径无效。您可以这样检查:
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
int main(int argc, char** argv)
{
IplImage* img = cvLoadImage(argv[1]);
//IplImage* img = cvLoadImage("path_to_image");
if (!img)
{
std::cout << "Image not loaded";
return -1;
}
cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE);
cvShowImage("Example1", img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("Example1");
}
您也可以直接在代码中提供路径,例如:
IplImage* img = cvLoadImage("path_to_image");
可以引用here了解为什么您的路径可能是错误的。
您也不应使用旧的 C 语法,而应使用 C++ 语法。你的例子将是这样的:
#include <opencv2\opencv.hpp>
#include <iostream>
using namespace cv;
int main()
{
Mat3b img = imread("path_to_image");
if (!img.data)
{
std::cout << "Image not loaded";
return -1;
}
imshow("img", img);
waitKey();
return 0;
}
可以引用this answer了解如何正确设置 Visual Studio。
关于c++ - 无法使用vs2013使用opencv加载图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31769249/