c++ - 无法使用vs2013使用opencv加载图片

标签 c++ image opencv visual-studio-2013

我正在阅读学习简历这本书,我遇到了第一个例子并遇到了这个问题

使用 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/

相关文章:

opencv - 无法在 opencv 3.3rc 上为 android : 制作 find_package(Opencv)

c++ - 在 C++ 中伪造静态 If

使用 auto 类型说明符的 C++ 基类非类型参数专门化推导失败

c++ - 如何暂时抑制 printf 的输出?

android - 如何在Android中实现图像失真效果

python - 在 Django 模板中包含图像文件显示断开的链接?

image - 直方图均衡结果

c++ - 语义 Action 后丢弃解析结果

opencv - StereoSGBM中如何定义参数 'numDisparities'?

c++ - 将 Mat 转换为 <vector<vector>> C++