使用 opencv 2.4.3 在 Visual c++ 中读/写图像时出错

Posted

技术标签:

【中文标题】使用 opencv 2.4.3 在 Visual c++ 中读/写图像时出错【英文标题】:Error while read/write an image in Visual c++ using opencv 2.4.3 【发布时间】:2013-12-30 19:34:00 【问题描述】:

我已按照使用 youtube 视频安装 opencv 的说明进行操作。 第一个程序运行良好。我正在使用 Visual Studio 2010 和 opencv 2.4.4

#include<opencv\cv.h>
#include<opencv\highgui.h>

using namespace cv;


int main()


    Mat image ;//=imread("C:\Users\Jango\Pictures\deepika-padukone-97a_4.jpg");
    VideoCapture cap;
    cap.open(0);
    namedWindow("window",1);

    while(1)
    
        cap>>image;
        imshow("window",image);

        waitKey(33);



    

视频窗口正在打开,我也可以在网络摄像头上看到视频。但是当我尝试以下程序时,我得到了很多错误(图像路径是正确的)

    #include<opencv\cv.h>
    #include<opencv\highgui.h>

using namespace cv;


int main()


    Mat image =imread("C:\Users\Jango\Pictures\deepika-padukone-97a_4.jpg");
    //VideoCapture cap;
    //cap.open(0);
    namedWindow("window",1);

        imshow("window",image);

        waitKey(33);


        return 1;
    

错误是

'mynewproject.exe':已加载 'C:\Users\Jango\Documents\Visual Studio 2010\Projects\projects_opencv\mynewproject\Debug\mynewproject.exe',已加载符号。 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\ntdll.dll”,已加载符号(已删除源信息)。 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\kernel32.dll”,已加载符号(已删除源信息)。 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\KernelBase.dll”,已加载符号(已删除源信息)。 “mynewproject.exe”:已加载“C:\Users\Jango\Documents\Visual Studio 2010\Projects\projects_opencv\mynewproject\Debug\opencv_core244d.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\msvcp100d.dll”,已加载符号。 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\msvcr100d.dll”,已加载符号。 “mynewproject.exe”:已加载“C:\Users\Jango\Documents\Visual Studio 2010\Projects\projects_opencv\mynewproject\Debug\opencv_highgui244d.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\user32.dll”,已加载符号(已删除源信息)。 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\gdi32.dll”,已加载符号(已删除源信息)。 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\lpk.dll”,已加载符号(已删除源信息)。 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\usp10.dll”,已加载符号(已删除源信息)。 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\msvcrt.dll”,已加载符号(已删除源信息)。 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\advapi32.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\sechost.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\rpcrt4.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\sspicli.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\cryptbase.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\ole32.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\oleaut32.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.18201_none_ec80f00e8593ece5\comctl32.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\avifil32.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\winmm.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\msacm32.dll”,无法找到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\msvfw32.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\shell32.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\shlwapi.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\avicap32.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\version.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\imm32.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\msctf.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\nvinit.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\uxtheme.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Program Files (x86)\Lenovo\Onekey Theater\ActiveDetect32.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Program Files (x86)\Lenovo\Onekey Theater\WindowsApiHookDll32.dll”,找不到或打开 PDB 文件 线程“Win32 线程”(0x684) 已退出,代码为 0 (0x0)。 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\dwmapi.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Program Files\Lenovo\Bluetooth Software\syswow64\BtMmHook.dll”,找不到或打开 PDB 文件 “mynewproject.exe”:已加载“C:\Windows\SysWOW64\psapi.dll”,找不到或打开 PDB 文件 mynewproject.exe 中 0x7712c41f (KernelBase.dll) 的第一次机会异常:Microsoft C++ 异常:cv::Exception at memory location 0x0045e56c.. mynewproject.exe 中 0x7712c41f (KernelBase.dll) 处未处理的异常:Microsoft C++ 异常:cv::Exception at memory location 0x0045e56c..

以下是截图

【问题讨论】:

忽略 PDB 警告,但修复您的图像路径:C:/Users/Jango/Pictures/deepika-padukone-97a_4.jpg 谢谢@berak 图像路径是正确的,我已经检查过了。我已经编辑了问题n有一些快照,看看吧。 谢谢,我的正斜杠出错了。已修复,谢谢 【参考方案1】:

我不知道这是否是唯一的问题,但首先要检查的是行:

Mat image =imread("C:\Users\Jango\Pictures\deepika-padukone-97a_4.jpg");

应该是

Mat image =imread("C:\\Users\\Jango\\Pictures\\deepika-padukone-97a_4.jpg");

【讨论】:

以上是关于使用 opencv 2.4.3 在 Visual c++ 中读/写图像时出错的主要内容,如果未能解决你的问题,请参考以下文章

设置 OpenCV 2.4.3 和 Microsoft Visual Studio 2012 (Win8 x64)

OpenCV学习笔记04:在Visual Studio上使用OpenCV4.5.5

在 Visual Studio 2015 中使用 Cinder-OpenCV

为啥在 Visual Studio 的 OpenCV 项目中使用 /MT 时仍然需要 dll?

在 Windows 上安装 OpenCV 并使用 Visual Studio C++ 构建程序

在没有 Visual Studio 的情况下使用 C++ 安装 Opencv