nu.pattern.OpenCV $ UnsupportedPlatformException:不支持操作系统“ WINDOWS”和体系结构“ X86_64”
问题内容:
我试图在具有以下maven依赖项的spring mvc项目中使用上述方法加载opencv:-
<dependency>
<groupId>org.openpnp</groupId>
<artifactId>opencv</artifactId>
<version>3.2.0-0</version>
</dependency>
我的代码是:
static {
nu.pattern.OpenCV.loadShared();
System.loadLibrary(org.opencv.core.Core.NATIVE_LIBRARY_NAME);
}
解决此错误的任何帮助将不胜感激。提前致谢
问题答案:
解决了这个
基于一个堆栈帖子,我包括了以下几行代码来加载库。
static{
String osName = System.getProperty("os.name");
String opencvpath = System.getProperty("user.dir");
if(osName.startsWith("Windows")) {
int bitness = Integer.parseInt(System.getProperty("sun.arch.data.model"));
if(bitness == 32) {
opencvpath=opencvpath+"\\opencv\\x86\\";
}
else if (bitness == 64) {
opencvpath=opencvpath+"\\opencv\\x64\\";
} else {
opencvpath=opencvpath+"\\opencv\\x86\\";
}
}
else if(osName.equals("Mac OS X")){
opencvpath = opencvpath+"Your path to .dylib";
}
System.out.println(opencvpath);
System.load(opencvpath + Core.NATIVE_LIBRARY_NAME + ".dll");
//nu.pattern.OpenCV.loadShared();
//System.loadLibrary(org.opencv.core.Core.NATIVE_LIBRARY_NAME);
}
在检查各种参数时,发现os.name返回了WINDOWS。user.dir返回eclipse根目录,sun.arch.data.model返回64。然后,根据此代码,我在eclipse根目录中创建必要的文件夹,并将最新的opencv
dll粘贴在该目录中。但是现在另一个问题是代码正在搜索dll的较旧版本,并且不接受该较新版本。
问题是由于以下事实:内置库正在使用旧版本的opencv,而我正在尝试使用最新版本。因此,我不得不从该库和tada的maven依赖项中排除opencv的先前版本,从而解决了问题。