opencv - 在 hadoop 中以分布式模式读取 haar 级联

标签 opencv hadoop apache-spark hdfs opencv3.0

我正在使用 OpenCV 库在 Hadoop 中使用 Spark 框架进行图像检测。 我能够在本地文件系统中存在 Haar 文件的本地模式下运行 spark 程序。 但是我在分布式模式下读取 Haar 文件时出现空指针错误,尽管我已经在所有集群节点中复制了 haar 文件并在代码中提供了绝对路径。

String fileloc ="/home/centos/haarcascade_frontalface_alt.xml"
    CascadeClassifier faceDetector = new CascadeClassifier(fileloc);

Error: 
    Caused by: java.lang.NullPointerException
        at javax.xml.bind.DatatypeConverterImpl.guessLength(DatatypeConverterImpl.java:658)
        at javax.xml.bind.DatatypeConverterImpl._parseBase64Binary(DatatypeConverterImpl.java:696)
        at javax.xml.bind.DatatypeConverterImpl.parseBase64Binary(DatatypeConverterImpl.java:438)
        at javax.xml.bind.DatatypeConverter.parseBase64Binary(DatatypeConverter.java:342)
        at com.lb.customlogic.impl.CustomLogicImpl.process(CustomLogicImpl.java:82)
        ... 20 more

我已经尝试使用前缀扩展名 file://、file:/和 file:///,但这些都不适合我。 我是否需要在前缀中添加任何额外的内容才能在程序执行期间读取文件? 由于Opencv不支持Hadoop,我想我不能为haar文件提供HDFS共享位置路径。

最佳答案

在 spark-submit 中添加 --files 参数后,该问题得到解决。 haar 文件分布在所有节点上。我们只需要在源代码中提供文件名:

String fileloc ="haarcascade_frontalface_alt.xml"
CascadeClassifier faceDetector = new CascadeClassifier(fileloc);

关于opencv - 在 hadoop 中以分布式模式读取 haar 级联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40434815/

相关文章:

python - 使用python和opencv检测图像中的文本区域

python - 简单数字识别中的OpenCV Python错误

jar - 如何在我的 map/reduce 作业中使用更新版本的 hadoop/lib jar?

scala - 为什么 Spark 应用程序以 "ClassNotFoundException: Failed to find data source: jdbc"作为带有 sbt 程序集的 uber-jar 失败?

amazon-web-services - 具有多个AWS凭证配置文件的PySpark s3访问?

python - 类型错误:使用 OpenCV 在 Python 中旋转图像时,参数 'mat' 需要 cv::UMat

python - 编译错误OpenCV 4.2.0 Ubuntu 18.04 : target 'modules/videoio/CMakeFiles/opencv_videoio.dir/all' failed make

Hadoop 可以替代 SSIS、Informatica 等 ETL 工具吗?

java - 使用自定义文件配置 EMR 节点

java - 文件在 Spark 作业中保持 .avro.tmp 状态?