首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Mat (opencv)转换为INDArray (DL4J)?

如何将Mat (opencv)转换为INDArray (DL4J)?
EN

Stack Overflow用户
提问于 2017-07-12 03:44:54
回答 2查看 1.2K关注 0票数 5

我希望任何人都能帮我解决这个问题。我正在研究一些图像分类,并试图将OpenCv 3.2.0和DL4J结合起来。我知道DL4J也包含了Opencv,但我认为它是无用的。

有人能帮我吗,如何转换成INDArray?我试着阅读了一些问题这里和类NativeImageLoader提供了DL4J提供的方法,asMatrix(Mat映像)。但是当我试图运行它时,我发现了一个错误。

java:没有为asMatrix(org.opencv.core.Mat)找到合适的方法

我不知道如何修复我的代码,或者我的代码有问题。有人能帮我找出这个问题吗?

顺便说一下,这是我的代码:

代码语言:javascript
复制
Mat imgMat = Imgcodecs.imread("C:\\Pictures\\image.jpg");
INDArray image = loader.asMatrix(imgMat);

感谢您的关注。

EN

回答 2

Stack Overflow用户

发布于 2021-11-03 16:51:08

DL4J不包括OpenCV本机库,因为库必须位于JAVA_HOME目录中,或者位于可以在代码中精确定位的其他位置。如果您想使用DL4J中包含的opencv特性,您必须首先下载包含在您正在使用的DL4J版本中的opencv版本。下载opencv库后,opencv本机库位于

  • 64位体系结构的opencv/build/java/x64/opencv_javaVERSION_OF_OPENCV.dll
  • 32位架构的opencv/build/java/x86/opencv_javaVERSION_OF_OPENCV.dll
  1. 您可以在java主页中复制本机库,并在代码中这样做:
代码语言:javascript
复制
 System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
 Mat imgMat = Imgcodecs.imread("C:\\Pictures\\image.jpg");
 INDArray image = loader.asMatrix(imgMat);
  1. 或者您可以使用这种方法,这是最好的
代码语言:javascript
复制
System.load("PATH/opencv_javaOPENCV_VERSION.dll");
Mat imgMat = Imgcodecs.imread("C:\\Pictures\\image.jpg");
INDArray image = loader.asMatrix(imgMat);

OPENCV_VERSION是定位库的路径,路径是您使用的opencv版本。

您可以在基于opencv的其他java项目中采用相同的方法。

票数 2
EN

Stack Overflow用户

发布于 2017-08-01 03:32:21

你可以试试org.datavec.image.loader.NativeImageLoader

public INDArray asMatrix(Mat image)抛出IOException

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45048041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档