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加载图片的主要内容,如果未能解决你的问题,请参考以下文章

opencv ios透明图片加载不透明

OpenCV:01图片&视频的加载显示

VS2010怎么加载QT的QICON

为啥VS2010下OpenCV读取TIFF文件读取失败?

番外1. OpenCV 图像处理之图片加载与视频加载

番外1. OpenCV 图像处理之图片加载与视频加载