在Java中加载OpenCV进行图像处理时出错

qkf9rpyu  于 2023-06-30  发布在  Java
关注(0)|答案(3)|浏览(232)

我在Java(Eclipse,Mac OSX)中加载OpenCV时遇到了问题。我是Java新手,我的主要目标是图像处理。我在网上查了几个例子,但是....我实际上有几个问题:

0)你能教我如何在Mac OS X的Eclipse中使用OpenCV库吗?我只下载了jar并完成了导入。
1)下面是我的代码示例

Mat A = Highgui.imread("/Users/.../Dropbox/ImageJSpace/Image_0001.jpg", 1);
    Mat B = null;
    Imgproc.cvtColor(A, B, Imgproc.COLOR_BGR2GRAY);

    Highgui.imwrite("/Users/.../Dropbox/ImageJSpace/Image_0001gray.jpg", B);

在本节中,我只是尝试读取图像,转换为矩阵,灰度,然后再次保存到图像。在我在网上查到的例子中,他们提到了cvtColor,但是我试着写它的时候,它不起作用。我必须为这个新库中的每个关键字编写Highgui.cvtColor和。
2)我得到以下错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1764)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1044)
at org.opencv.highgui.Highgui.<clinit>(Highgui.java:416)
at Expertising.ImageModifications.Mat2Img(ImageModifications.java:382)
at Expertising.Main.main(Main.java:7)

我不知道怎么摆脱这个..
3)我的程序比本节要长,为了清楚起见,我使用了以下导入:

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;

4)我想使用OpenCV处理DICOM图像。有没有一种方法来解决这个问题?
5)我还导入了ImageJ库来使用DICOM。我可以打开和展示。我可以阅读和使用像素吗?
6)我主要研究DICOM图像中的结构Tensor。如何从DICOM读取单个像素?
7)我正在研究方向性。有没有什么方法可以更好的探索呢?
8)我可以将我的DICOM图像转换为矩阵,然后使用JAMA探索矩阵中的像素吗?

请帮帮忙,非常感谢...

s6fujrry

s6fujrry1#

我对OpenCV一无所知,但这里有一个关于如何使用OpenCV with Eclipse的教程。
至于DICOM,我发现this
OpenCV不支持DICOM图像,因此您必须找到合适的库(如http://dicom.offis.de/dcmtk.php.en)并将加载的图像转换为cv::Mat。
我建议使用OpenCV Questions网站来回答这个问题。

oknrviil

oknrviil2#

你是否将OpenCV Core库添加到main方法中?

System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
5lwkijsr

5lwkijsr3#

要在Java中使用OpenCV加载视频文件,请确保在Java项目中正确安装和配置了OpenCV。您可以参考OpenCV文档了解安装说明。
用于加载Windows的正确库的代码示例:

File lib = null;
String os = System.getProperty("os.name");
String bitness = System.getProperty("sun.arch.data.model");

if (os.toUpperCase().contains("WINDOWS")) {
    if (bitness.endsWith("64")) {
       lib = new File("D:\\opencv\\build\\java\\x64\\" + System.mapLibraryName("opencv_java401"));
    } else {
       lib = new File("D:\\opencv\\build\\java\\x86\\" + System.mapLibraryName("opencv_java401"));
    }
}

System.out.println(lib.getAbsolutePath());
System.load(lib.getAbsolutePath());

相关问题