当前位置: 首页 > 面试题库 >

已在hadoop中加载OpenCV库但无法正常工作

上官高翰
2023-03-14
问题内容

我正在尝试将OpenCV与Hadoop一起使用。下面是我的代码。我只是在测试OpenCV库是否可以在Hadoop上正常工作,即当我在public int run(String[] args)Hadoop 函数中运行OpenCV代码时 。

我在互联网上进行搜索,发现了一些libopencv_java310.so在Hadoop中添加OpenCV本机库()的方法。我尝试了一些方法,但是没有用。例如本教程。

它说添加JAVA.LIBRARY.PATHhadoop-config.sh文件。但这没有用。我收到这个错误

Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java310 in java.library.path
at line
System.loadLibrary(Core.NATIVE.LIBRARY.NAME);

最后,我将OpenCV本机库(libopencv_java310.so)添加到此路径(从Internet获得解决方案)

$HADOOP_HOME/lib/native

它似乎奏效了。我没有收到上述错误。但是我在下一行得到了这个错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.objdetect.CascadeClassifier.CascadeClassifier_1(Ljava/lang/String;)

该错误在第:

CascadeClassifier cad = new CascadeClassifier();

据我所知,如果未加载OpenCV本机库,则会收到此错误。但是现在库已加载,我不知道此错误的原因是什么。

 public int run(String[] args) throws Exception {
    Configuration conf = new Configuration();
    Job job = Job.getInstance(conf);
    job.setJarByClass(readVideoFile.class);
    job.setJobName("smallfilestoseqfile");
    job.setInputFormatClass(readVideoInputFormat.class);
    job.setNumReduceTasks(1);
    FileInputFormat.setInputPaths(job, new Path(args[0]));
    FileOutputFormat.setOutputPath(job, new Path(args[1]));
    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(Text.class);
    job.setMapperClass(readVideoMapper.class);

    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    CascadeClassifier cad = new CascadeClassifier();

    return job.waitForCompletion(true) ? 0 : 1;
}

问题答案:

我面临着同样的问题。我使用以下解决方法。

您可以从使用JavaCV工具开始,因为它可以与hadoop完美配合。然后使用OpenCv,通过将所有opencv库和jar封装在可执行jar中来制作可执行jar。现在,本机库已由操作系统加载。因此,在可执行的jar文件中,编写将OpenCv本机库提取为临时文件的代码,然后加载该库,最后删除临时文件。



 类似资料:
  • testFX。java: testFXController.java: 测验fxml: 当我运行testFX. java时,系统打印: 这是教授的代码,我似乎无法运行它。我意识到主要问题在代码

  • 我已经在Android Studio(https://www.learn2crack.com/2016/03/setup-opencv-sdk-android-studio.html)中安装了OpenCV SDK,但似乎我收到了这种错误消息。 我已经将包含到文件夹中。

  • 我用OpenCV编写了一个简单的应用程序。我把所有的jar文件放在/usr/local/hadoop/lib文件夹中。在运行hadoop作业时,我收到以下错误:

  • 问题内容: 我在ubuntu 14.04.02上,已安装和更新了python,cython和numpy。我从http://github.com/itseez/opencv提取了最新的open cv来源,根据文档进行了编译…当尝试运行从https://github.com/shantnu/FaceDetect提取的python来源时/ 这给了我以下错误: modprobe:致命:找不到模块nvidi

  • 问题内容: 由于出现以下错误消息,我有一个无法使用的问题 qt.qpa.plugin:在“”中找不到Qt平台插件“ cocoa” 此应用程序无法启动,因为无法初始化Qt平台插件。重新安装该应用程序可能会解决此问题。 我最初使用的最后一台Macbook没有QT,所以我不知道该如何处理。 有任何想法吗? 问题答案: 更新后,我遇到了同样的问题。 卸载并安装较低版本(例如)即可解决此问题。

  • 问题内容: 尽管我很确定这是昨天或前一天工作的,例如,在IE10中不再起作用。我已经测试了我的浏览器,但是它不再起作用了。还有谁有相同的问题吗?或者,它永远都行不通吗? 问题答案: IE不支持输入type =“ number”,但您可以使用jQueryUISpinner小部件。它非常易于使用,并且具有许多对开发人员友好的API。