今年组里有大项目落我头上了,并不能像去年一样回家还能搞搞Cocos2dX,一把老泪流了下来。。。
回到正题,由于组里需要做一个显示板的自动测试项目,涉及到Computer Vision。不得不说,这才是项目里的大坑。之前一直在做其他基础库的研发,最近开始了视觉识别的研发进度。由于市面上没有很合适的开源工业摄影机,只能硬着头皮先试试一些已经有先例的视觉库来尝试。前期项目架构在C#上,自然而然就想到了OpenCV在包装C#的库Emgu CV,而且这个库跨平台,很适合后期移植到其他平台上去,我就选择了这个库来进行尝试。
在尝试过程中,遇到一个奇怪的异常,下面这句调在编译期能够通过,但运行中就出现许多问题。我在家进行开发时,一切正常,但把工作流发到公司时候,公司机器却无法正常运行,出现加载异常,很明显是X86平台调用了X64的DLL导致的问题。按照网上说的,把Emgu的X86文件夹放在Debug文件夹下,也无法加载,此时已然崩溃,但在漫长的几个小时后,细心比对公司机器和家里机器之间配置不同,发现一个小地方调整之后就解决了。
Capture capture = new Capture(); //create a camera captue
解决方法步骤:1.Vs平台下,将项目属性从Any CPU调整为X86
2.你的机器如果是X86的,记得将Emgu下X86文件夹的路径放进环境变量时候,务必放在X64文件夹路径之前.仅仅这一点差异,耗费了我几个小时的精力
小手一抖,传播一点经验,让更多陷进EMGU在X86和X64平台差异魔爪之下的人得以解决问题