代码之家  ›  专栏  ›  技术社区  ›  joesan

将Java中的OpenCV Mat转换为Scala中的NumPy数组

  •  0
  • joesan  · 技术社区  · 4 年前

    我在Scala中有一个示例代码库,我使用OpenCV和ScalaPy进行一些图像分类。以下是代码位:

    def loadImage(imagePath: String): Image = {
      // 0. Load the image and extract class label where a path to the image is assumed to be
      // /path/to/dataset/{class}/{image}.jpg
      val matrix: Mat = imread(imagePath)
      val label = imagePath.split("")
    
      // 1. Run the loaded image through the preprocessors, resulting in a feature vector
      //val preProcessedImagesWithLabels = Seq(new ImageResizePreProcessor(appCfg)).map(preProcessor => (preProcessor.preProcess(matrix), label))
      val preProcessedImagesWithLabels = Seq(new ImageResizePreProcessor(appCfg)).map(preProcessor => preProcessor.preProcess(matrix))
      np.asarray(preProcessedImagesWithLabels)
    }
    

    然而,它失败的原因是找不到NumPy的隐式转换器:

    [error] /home/joesan/Projects/Private/ml-projects/object-classifier/src/main/scala/com/bigelectrons/animalclassifier/ImageLoader.scala:10:34: not found: type NumPy
    [error]   val np = py.module("numpy").as[NumPy]
    

    除了进口之外,预计还有什么?

      "me.shadaj" %% "scalapy-numpy" % "0.1.0",
    "me.shadaj" %% "scalapy-core" % "0.5.0",
    
    0 回复  |  直到 4 年前
        1
  •  1
  •   gianluca aguzzi    4 年前

    尝试使用scalapy-numpy的最新“dev”版本: 0.1.0+6-14ca0424

    因此,请更改sbt内置:

    libraryDependencies += "me.shadaj" %% "scalapy-numpy" % "0.1.0+6-14ca0424"
    

    我尝试在菊石这个脚本:

    import me.shadaj.scalapy.numpy.NumPy 
    import me.shadaj.scalapy.py 
    
    val np = py.module("numpy").as[NumPy] 
    
    

    似乎找到了 NumPy 如预期

    推荐文章