Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EmguCV 64位生成运行时错误_C#_Opencv_Emgucv - Fatal编程技术网

C# EmguCV 64位生成运行时错误

C# EmguCV 64位生成运行时错误,c#,opencv,emgucv,C#,Opencv,Emgucv,我在W7/x64操作系统上使用.net 4.0和VS2010将现有32位EmguCV(版本2.3)构建为64位时遇到问题。我已经购买了商业许可证,如果这是重要的,并从收据中提供的链接下载 错误是 System.TypeInitializationException was unhandled Message=The type initializer for 'Emgu.CV.CvInvoke' threw an exception. Source=Emgu.CV TypeName=Emgu

我在W7/x64操作系统上使用.net 4.0和VS2010将现有32位EmguCV(版本2.3)构建为64位时遇到问题。我已经购买了商业许可证,如果这是重要的,并从收据中提供的链接下载

错误是

System.TypeInitializationException was unhandled
 Message=The type initializer for 'Emgu.CV.CvInvoke' threw an exception.
 Source=Emgu.CV
 TypeName=Emgu.CV.CvInvoke
我遵循了中提供的说明。事实上,我在本文中使用了示例项目,它们在V2.2中构建得很好,但是当我用V2.3二进制文件(emgu和opencv)替换时,遇到了错误

是否有人成功构建了Emgu(版本2.3.x)x64项目?请提供一些指导。

此错误的原因(如果其他人遇到相同的问题)是程序无法访问opencv_imgproc231.dll或opencv_core231.dll,即使它们存在于输出“bin”目录中

有两种解决方案:

  • 将它们添加到项目中,并将其属性设置为“始终复制”,因为它们是EMGU的两个关键文件

  • 如果步骤1不起作用,请用新副本替换bin文件夹中的当前密钥文件

  • 如果这两种方法都失败,那么构建可能有问题,因此请从Sourceforge下载一个新的EMGU副本,然后重试。稍后将在技术文章中包含该错误,以便更清楚地解释如何解决该错误

    干杯,
    Chris

    无需将其添加到项目中;VS不会让你。只需打开
    FaceRecognizer.cs
    公共静态部分类中调用
    并更改:

    [DllImport(CvInvoke.EXTERN_LIBRARY, CallingConvention = CvInvoke.CvCallingConvention)] 
    
    致:


    确保您更改了所有项目。

    第一个测试方法是:从emgu cv installaiton目录打开一个示例项目并运行它。例如,打开hello world示例并尝试运行它。如果示例项目运行时没有问题,那么安装是正确的

    对于emgu cv示例项目,项目构建设置中的输出路径选项的值设置为“…\\ bin'。要解决项目问题,请在visual studio中打开项目,并将输出路径选项的值设置为'C:\Emgu\emgucv 2.9\bin'。试着运行这个项目。它必须成功运行

    现在,将输出路径选项的值设置回bin\Debug\。然后,使用“添加->现有项”菜单将'C:\Emgu\emgucv 2.9\bin'文件夹中的所有DLL文件添加到项目中。同样,使用“添加->现有项”菜单将'C:\Emgu\emgucv 2.9\bin\x64'文件夹中的所有DLL文件添加到项目中。现在,转到属性窗口,并将所有dll文件的复制到输出目录选项设置为始终复制。最后,在Configuration Manager窗口中,为x64平台创建新配置


    祝你好运

    是的,我已将opencv中正确的二进制文件添加到我的调试文件夹中。所以这不可能是一个简单的dll错误。嗨,Mikos,我发现这篇文章是我写的,这很有趣。我现在会调查一下这个问题,然后再给你回复。Cheers@Chris谢谢我严格按照你的指示去做——这确实很有帮助。衷心感谢您的帮助和支持。您好,我已经使用EMGU 2.3.0 x64编译了这些项目,一切正常。您提到的错误可能是由于没有针对正确的平台。InnerException是否读取{“试图加载格式不正确的程序。(来自HRESULT的异常:0x8007000B)”}如果是,则这就是问题所在。如果没有,你可以发布它,这样我就可以尝试重新创建问题。“Hello@Chris”OpenCV不支持从图像到图像的转换。我尝试将这两个引用添加到我的项目中,但不知何故,我不被允许添加它。它说,
    引用无法添加原因是它不可访问或不是有效的程序集/COM组件
    。请帮忙!您好,提到的文件是EMGU有效包装的非托管opencv代码,它们不是.NET组件,必须添加到输出目录或作为项目中的现有文件。在codeproject上看到我的文章,它将引导您完成它。干杯
    [DllImport(Emgu.CV.CvInvoke.EXTERN_LIBRARY, CallingConvention = Emgu.CV.CvInvoke.CvCallingConvention)]