我正在尝试使用OpenCV的基本程序,代码如下:
#include "cv.h"
#include "highgui.h"
int main()
{
IplImage* newImg;
newImg = cvLoadImage("~/apple.bmp", 1);
cvNamedWindow("Window", 1);
cvShowImage("Window", newImg);
cvWaitKey(0);
cvDestroyWindow("Window");
cvReleaseImage(&newImg);
return 0;
}
当我运行时,我得到了
程序无法启动,因为 你的libcxcore200.dll丢失了 电脑。尝试重新安装 程序来解决这个问题。
但是,我可以看到这个DLL。它存在。我已将以下内容添加到链接器
的输入依赖项中C:\ OpenCV2.0 \ lib中\ libcv200.dll.a C:\ OpenCV2.0 \ LIB \ libcvaux200.dll.a C:\ OpenCV2.0 \ LIB \ libcxcore200.dll.a C:\ OpenCV2.0 \ lib中\ libhighgui200.dll.a
是什么给出的?我正在使用visual studio 2008。
当我链接.dll文件而不是.dll.a文件时,我得到了
致命错误LNK1107:无效或损坏 file:无法读取0x3F8 libcv200.dll
答案 0 :(得分:23)
我按照http://opencv.willowgarage.com/wiki/VisualC%2B%2B_VS2010的说明操作,但仍然遇到了完全相同的问题,所以我的解决方法就是这样。
获取MSVC 2010快递版。
获取Win 32 OpenCV 2.2二进制文件并安装在默认位置。
创建新项目。
项目设置
项目 - > OpenCV_Helloworld属性...配置属性 - > VC ++目录
包含目录...添加:C:\OpenCV2.2\include\;
图书馆目录...添加:C:\OpenCV2.2\lib;C:\OpenCV2.2\bin;
来源目录......添加:
C:\OpenCV2.2\modules\calib3d\src;C:\OpenCV2.2\modules\contrib\src;C:\OpenCV2.2\modules\core\src;C:\OpenCV2.2\modules\features2d\src;C:\OpenCV2.2\modules\flann\src;C:\OpenCV2.2\modules\gpu\src;C:\OpenCV2.2\modules\gpu\src;C:\OpenCV2.2\modules\highgui\src;C:\OpenCV2.2\modules\imgproc\src;C:\OpenCV2.2\modules\legacy\src;C:\OpenCV2.2\modules\ml\src;C:\OpenCV2.2\modules\objdetect\src;C:\OpenCV2.2\modules\video\src;
链接器 - >输入 - >附加依赖...
对于Debug Builds ...添加:
opencv_calib3d220d.lib;opencv_contrib220d.lib;opencv_core220d.lib;opencv_features2d220d.lib;opencv_ffmpeg220d.lib;opencv_flann220d.lib;opencv_gpu220d.lib;opencv_highgui220d.lib;opencv_imgproc220d.lib;opencv_legacy220d.lib;opencv_ml220d.lib;opencv_objdetect220d.lib;opencv_video220d.lib;
此时我认为我已经完成了,但遇到了在调试模式下运行exe时遇到的问题。一旦你看到它,最后一步是显而易见的,选择:
链接器 - >常规...将“使用库依赖项输入”设置为“是”
希望这有帮助。
答案 1 :(得分:16)
只需将C:\OpenCV2.0\bin
添加到 PATH 环境变量
或
安装OpenCV时,
选择Add OpenCV to the system PATH for current user
选项,这不是默认选项
答案 2 :(得分:14)
仅为了您的信息,在添加“PATH”之后,对于我的win7,我需要重启它以使其正常工作。
答案 3 :(得分:6)
我在opencv上遇到了很多问题,并且在经历了令人毛骨悚然的4-6个月之后才取得了成功。这是我遇到的最后一个问题,但上述所有问题都无法解决。对我来说有用的只是复制并粘贴opencv_core2 * .dll(以及opencv_highgui2 * .dll,因为你将它包括在内也会要求它)到发行版(或调试文件夹中 - 我假设。还没有测试过)项目的文件夹,您的应用程序文件所在的位置。
希望这有帮助!
答案 4 :(得分:6)
在Visual Studio 2013中,您需要将其添加到Environment Variables
,然后将Restart
添加到您的电脑中。这是.dll文件所在的路径。
答案 5 :(得分:4)
您只需将所需dll文件(或文件)的文件夹添加到“Path”中的系统“Environment Variables”中。 您的问题将100%得到解决。我也有这个问题。
答案 6 :(得分:1)
只需打开bin文件夹,然后将.dll文件复制并粘贴到您正在使用的文件夹中即可解决问题
答案 7 :(得分:0)
关于@ Marc的回答,我认为VC不会使用OS的路径。您是否添加了VC库路径的路径。我通常会将DLL添加到项目中,如果在构建中更新则复制,这对我来说非常有用。
答案 8 :(得分:0)
你可以在opencv \ build \ x86 \ vc12 \ bin文件夹中找到opencv_core248和其他dll。只需将所需的dll复制到system32文件夹即可。你的应用程序应该开始工作!希望它有所帮助。
答案 9 :(得分:0)
这可能就像复活一匹死马。但是就在那儿,为什么将这些问题的答案简单地将dll放入system32文件夹中,是因为该文件夹位于os的系统路径中。
为操作系统提供路径链接实际上是最佳实践。
使用Windows 10
答案 10 :(得分:-1)
DLL文件末尾的“.a”是个问题,因为你没有使用CMAKE来构建OpenCV 2.0。此外,您不链接到DLL文件,链接到库文件,再次,您没有看到正确的库文件的原因是因为您没有使用CMAKE来构建OpenCV 2.0。如果要使用OpenCV 2.0,则必须构建它才能在Visual Studio中正常工作。如果您不想构建它,那么我建议降级到OpenCV 1.1pre,它是预先构建的,并且在Visual Studio中更加宽容。
另一个选项(我建议的那个)是放弃OpenCV并使用EmguCV。我一直在玩OpenCV大约一年,当我切换到EmguCV因为EmguCV与.NET一起工作时,事情变得容易得多,所以你可以使用像C#这样没有指针,头文件的所有C ++包袱的语言,和内存分配问题。
至于64位与32位的问题,OpenCV并没有正式支持64位。为了安全起见,打开项目属性并将“Build”选项卡下的“Platform Target”从“Any CPU”更改为“X86”。只要您使用像EmguCV这样的包装器,就可以在OpenCV执行任何操作时执行此操作。
答案 11 :(得分:-1)
从System32
中的/ bin复制所有.dll答案 12 :(得分:-2)
只需将.dll文件复制到C:\ windows \ system32 \
即可答案 13 :(得分:-6)
无需做任何事情。这是一个视觉工作室的错误。
走到这里: http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=31354
并为您的计算机操作系统下载相应的修补程序
关闭visual studio,运行修复程序,然后重新启动VS
代码应该运行没有任何错误。