我无法使用该SURFDetector
对象,因为程序崩溃了。
我正在使用 Emgu 的 2.4.9 版本(在此处下载表格),并且我已按照有关添加 OpenCV 依赖项的说明进行操作(链接):
对于 EMGU CV 版本 >=2.4 cudart64_42_9.dll、cvextern.dll、npp64_42_9.dll、opencv_calib3dXXX.dll、opencv_contribXXX.dll、opencv_coreXXX.dll、opencv_features2dXXX.dll、opencv_flannXXX.dll、opencv_highguiXXX.dll、opencv_imgprocXXX.dll、opencv_legacyXXX.dll , opencv_mlXXX.dll, opencv_nonfreXXX.dll, opencv_objectdetectXXX.dll, opencv_videoXXX.dll,其中 XXX 是 OpenCV 版本号。
我还添加了对Emgu.CV.dll
和Emgu.Util.dll
的引用Emgu.CV.UI
。为了尝试解决问题,我尝试添加Emgu.CV.GPU.dll
and opencv_gpuXXX.dll
,但没有成功。
我正在使用安装了 Windows 7 的 64 位 PC,但我的项目是为 x86 构建的,并且我正在使用 x86 架构的依赖项。在使用该SURFDetector
对象之前,一切正常。
当程序到达以下行时会发生崩溃:
SURFDetector surfCPU = new SURFDetector(500, false);
该程序抛出两种异常(是的,两种),我无法理解为什么它抛出一种而不是另一种:
- mscorlib.dll 中的 System.Reflection.TargetInvocationException
- Emgu.CV.dll 中的 System.DllNotFoundException(无法加载“cvextern”DLL),带有奇怪的错误代码(HRESULT:0x8007007E)
在这两种情况下,VisualStudio 2012 都会打开一个名为“源不可用”或类似名称的新选项卡(我不确定 VisualStudio 英文版使用的确切单词,因为我使用的是意大利语版本)。
编辑:我想补充一点,与库一起提供的示例的可执行文件,称为 SURFFeature,可以完美运行......