麻烦大家帮小弟我看看,有关Emgu OpenCV的设置和安装的有关问题
麻烦大家帮我看看,有关Emgu OpenCV的设置和安装的问题
最近有一个作业,要用到OpenCV,并且要在.NET平台下进行,我准备用Emgu + C#去写,以前没接触过OpenCV的开发,在安装和配置上遇到了问题,烦请大家解答一下,问题是这样的:
我从http://sourceforge.net/上下载了Emgu CV的3个相关文件:
Emgu.CV.SourceAndExamples-1.4.0.0.zip
Emgu.CV.Windows.Binary-1.4.0.0.zip
以及文档
把Emgu.CV.SourceAndExamples-1.4.0.0.zip解压出来的文件夹src放在了D:\Program Files\OpenCV下
把Emgu.CV.Windows.Binary-1.4.0.0.zip中解压出来的文件夹重命名为Emgu,也放在了D:\Program Files\OpenCV下,并且把这两个文件夹都设置到了Path里,
在项目中我把Emgu文件夹下所有的dll都添加到了引用里,写了一段代码(附1)进行测试,结果出现了"Emgu.CV.CvInvoke的类型初始值设定项引发异常",我想应该是DLL的问题,我又把src下的DLL都复制到了System32下,还是不行,又复制到了项目目录下,还是不行.我看了一下异常的详细信息,Message显示"无法加载cxcore110.dll",但是我在CMD下任意目录下直接输入cxcore110.dll,都可以用VS打开.
我觉得可能还是我的DLL设置里存在一些问题,但是自己实在是搞不清楚了,麻烦大家给解答一下.谢谢.
这个项目我是在Visual Studio 2008下进行的.
附1:我的测试代码
附2:"Emgu.CV.CvInvoke的类型初始值设定项引发异常"的详细信息:
未处理 System.TypeInitializationException
Message="“Emgu.CV.CvInvoke”的类型初始值设定项引发异常。"
Source="Emgu.CV"
TypeName="Emgu.CV.CvInvoke"
StackTrace:
在 Emgu.CV.CvInvoke.cvCreateImageHeader(MCvSize size, IPL_DEPTH depth, Int32 channels)
在 Emgu.CV.Image`2.AllocateData(Int32 rows, Int32 cols)
在 Emgu.CV.Image`2..ctor(Int32 width, Int32 height)
在 OpenCV_Cell.Program.Main(String[] args) 位置 E:\My Documents\Visual Studio 2008\Projects\OpenCV_Cell\OpenCV_Cell\Program.cs:行号 12
在 System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
在 System.Threading.ThreadHelper.ThreadStart()
InnerException: System.DllNotFoundException
Message="无法加载 DLL“cxcore110.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。"
Source="Emgu.CV"
TypeName=""
StackTrace:
在 Emgu.CV.CvInvoke.cvRedirectError(CvErrorCallback errorHandler, IntPtr userdata, IntPtr prevUserdata)
在 Emgu.CV.CvInvoke..cctor()
InnerException:
------解决方案--------------------
终于搞定了!到下面去下载Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)这个包安装。
http://www.microsoft.com/downloads/thankyou.aspx?familyId=200b2fd9-ae1a-4a14-984d-389c36f85647&displayLang=en#
我的QQ285826592,以后多交流哈
最近有一个作业,要用到OpenCV,并且要在.NET平台下进行,我准备用Emgu + C#去写,以前没接触过OpenCV的开发,在安装和配置上遇到了问题,烦请大家解答一下,问题是这样的:
我从http://sourceforge.net/上下载了Emgu CV的3个相关文件:
Emgu.CV.SourceAndExamples-1.4.0.0.zip
Emgu.CV.Windows.Binary-1.4.0.0.zip
以及文档
把Emgu.CV.SourceAndExamples-1.4.0.0.zip解压出来的文件夹src放在了D:\Program Files\OpenCV下
把Emgu.CV.Windows.Binary-1.4.0.0.zip中解压出来的文件夹重命名为Emgu,也放在了D:\Program Files\OpenCV下,并且把这两个文件夹都设置到了Path里,
在项目中我把Emgu文件夹下所有的dll都添加到了引用里,写了一段代码(附1)进行测试,结果出现了"Emgu.CV.CvInvoke的类型初始值设定项引发异常",我想应该是DLL的问题,我又把src下的DLL都复制到了System32下,还是不行,又复制到了项目目录下,还是不行.我看了一下异常的详细信息,Message显示"无法加载cxcore110.dll",但是我在CMD下任意目录下直接输入cxcore110.dll,都可以用VS打开.
我觉得可能还是我的DLL设置里存在一些问题,但是自己实在是搞不清楚了,麻烦大家给解答一下.谢谢.
这个项目我是在Visual Studio 2008下进行的.
附1:我的测试代码
- C# code
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Emgu.CV; using Emgu.CV.UI; namespace OpenCV_Cell { class Program { static void Main (string[] args) { Image<Bgr,Byte> image; image = new Image<Bgr, Byte> (640, 480); //在这一行引发了异常 } } }
附2:"Emgu.CV.CvInvoke的类型初始值设定项引发异常"的详细信息:
未处理 System.TypeInitializationException
Message="“Emgu.CV.CvInvoke”的类型初始值设定项引发异常。"
Source="Emgu.CV"
TypeName="Emgu.CV.CvInvoke"
StackTrace:
在 Emgu.CV.CvInvoke.cvCreateImageHeader(MCvSize size, IPL_DEPTH depth, Int32 channels)
在 Emgu.CV.Image`2.AllocateData(Int32 rows, Int32 cols)
在 Emgu.CV.Image`2..ctor(Int32 width, Int32 height)
在 OpenCV_Cell.Program.Main(String[] args) 位置 E:\My Documents\Visual Studio 2008\Projects\OpenCV_Cell\OpenCV_Cell\Program.cs:行号 12
在 System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
在 System.Threading.ThreadHelper.ThreadStart()
InnerException: System.DllNotFoundException
Message="无法加载 DLL“cxcore110.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。"
Source="Emgu.CV"
TypeName=""
StackTrace:
在 Emgu.CV.CvInvoke.cvRedirectError(CvErrorCallback errorHandler, IntPtr userdata, IntPtr prevUserdata)
在 Emgu.CV.CvInvoke..cctor()
InnerException:
------解决方案--------------------
终于搞定了!到下面去下载Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)这个包安装。
http://www.microsoft.com/downloads/thankyou.aspx?familyId=200b2fd9-ae1a-4a14-984d-389c36f85647&displayLang=en#
我的QQ285826592,以后多交流哈