vs2013无法用opencv加载图片
Posted
技术标签:
【中文标题】vs2013无法用opencv加载图片【英文标题】:unable to load picture with opencv with vs2013 【发布时间】:2015-08-02 06:41:15 【问题描述】:我正在阅读 Learning CV 书,我遇到了第一个示例并遇到了这个问题
使用 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的窗口,它是灰色的,窗口中没有图像。
这是正确的吗?或者我应该期望得到什么?
【问题讨论】:
您在调试配置中作为命令行参数提供了要加载的图像的正确路径,对?您的示例与您所能获得的一样多:nearly verbatim 在线教程。 您好,感谢您的快速回复。我不认为我这样做......我的代码和你给我的链接之间的区别是这一行, 'cvLoadImage(argv[1])' 。如何使用我的代码指定图像的路径? 【参考方案1】:您没有正确加载图像,即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。
【讨论】:
【参考方案2】:不清楚是否正在加载图像。如果找不到图像,OpenCV 将静默失败。
试试
auto img= cv::imread(name, CV_LOAD_IMAGE_ANYDEPTH);
if (img.data() == nullptr)
std::cout << "Failed to load image" << std::endl;
【讨论】:
以上是关于vs2013无法用opencv加载图片的主要内容,如果未能解决你的问题,请参考以下文章