idea中使用Dcm4che 中报 no opencv_java in java.library.path

在idea中使用 Dcm4che时,使用到了opencv 的库和方法,然后报no opencv_java in java.library.path 错误。

解决方法: 

在下载Dcm4che时,已经下载了weasis-opencv-core-3.0.4.jar,是不需要额外下载opncv 的jar 包的。

1. 在项目的结构中添加 这个opencv 的jar包

 

2.因为opean_cv 的jar包是本地方法,Java在执行代码时候,是默认从Java的libraries 中寻找路径。

3. 需要在Java的运行环境中的vm option 中配置open_cv的dll 

 idea 进来的时候,application 的选项是没有Java vm option,需要在 2 中找到这个选项,这个选项才会出现。 

-Djava.library.path=E:\sourcecode\imageZoomTest\lib\x64 这个路径配opencv_java.dll 所在的路径。 在dcm4che源码 中有opencv_java.dll 放在自己指定的路径下就可以了。

到这里,这个问题就解决了。 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: import org.dcm4che3.data.Attributes; import org.dcm4che3.data.Tag; import org.dcm4che3.io.DicomInputStream; import org.dcm4che3.util.SafeClose;import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException;public class DicomUtils { public static BufferedImage getImage(String filePath) throws IOException { DicomInputStream din = null; BufferedImage bi = null; try { din = new DicomInputStream(new File(filePath)); Attributes attributes = din.readDataset(-1, -1); int rows = attributes.getInt(Tag.Rows, 0); int columns = attributes.getInt(Tag.Columns, 0); bi = new BufferedImage(columns, rows, BufferedImage.TYPE_BYTE_GRAY); attributes.getValue(Tag.PixelData, -1, -1). readBytes(bi.getRaster(), 0xffff); } finally { SafeClose.close(din); } return bi; } }答:这是使用dcm4che库,完成从dicom协议文件获取图片的java代码:import org.dcm4che3.data.Attributes;import org.dcm4che3.data.Tag;import org.dcm4che3.io.DicomInputStream;import org.dcm4che3.util.SafeClose;import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;public class DicomUtils {public static BufferedImage getImage(String filePath) throws IOException {DicomInputStream din = null;BufferedImage bi = null;try {din = new DicomInputStream(new File(filePath));Attributes attributes = din.readDataset(-1, -1);int rows = attributes.getInt(Tag.Rows, 0);int columns = attributes.getInt(Tag.Columns, 0);bi = new BufferedImage(columns, rows, BufferedImage.TYPE_BYTE_GRAY);attributes.getValue(Tag.PixelData, -1, -1). readBytes(bi.getRaster(), 0xffff);} finally {SafeClose.close(din);}return bi;}} ### 回答2: dcm4che是一个用于处理DICOM(数字影像和通信医疗图像的通信)协议的Java库。下面是一个简单的示例代码,用于从DICOM协议文件获取图像: ``` import org.dcm4che3.data.Attributes; import org.dcm4che3.data.Tag; import org.dcm4che3.io.DicomInputStream; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class DICOMImageReader { public static void main(String[] args) { String dicomFilePath = "/path/to/dicom/file.dcm"; try (DicomInputStream dis = new DicomInputStream(new File(dicomFilePath))) { Attributes attrs = dis.readDataset(-1, -1); // 获取图像的宽度和高度 int width = attrs.getInt(Tag.Columns, 0); int height = attrs.getInt(Tag.Rows, 0); // 获取图像数据 byte[] pixelData = attrs.getBytes(Tag.PixelData); // 创建一个BufferedImage对象 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_USHORT_GRAY); // 将图像数据写入BufferedImage对象 image.getRaster().setDataElements(0, 0, width, height, pixelData); // 保存图像到文件 String outputFilePath = "/path/to/output/image.png"; ImageIO.write(image, "png", new File(outputFilePath)); System.out.println("图像成功保存到文件:" + outputFilePath); } catch (IOException e) { e.printStackTrace(); } } } ``` 请将`/path/to/dicom/file.dcm`替换为你实际的DICOM协议文件路径,并将`/path/to/output/image.png`替换为你想要保存图像的输出路径。这段代码将读取DICOM文件,提取图像的宽度、高度和像素数据,并将图像保存为PNG格式的文件。 ### 回答3: 使用dcm4che库从dicom协议文件获取图片的Java代码如下: ``` import org.dcm4che3.data.*; import org.dcm4che3.io.*; import org.dcm4che3.util.*; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; public class DICOMImageExtractor { public static void main(String[] args) { String dicomFilePath = "path_to_dicom_file.dcm"; try { DicomInputStream dicomInputStream = new DicomInputStream(new FileInputStream(dicomFilePath)); DicomObject dicomObject = dicomInputStream.readDicomObject(); Attribute pixelData = dicomObject.get(Tag.PixelData); byte[] pixelDataBytes = pixelData.getByteValues(); String photometricInterpretation = dicomObject.getString(Tag.PhotometricInterpretation); int bitsAllocated = dicomObject.getInt(Tag.BitsAllocated); int rows = dicomObject.getInt(Tag.Rows); int columns = dicomObject.getInt(Tag.Columns); BufferedImage image = ImageUtil.convertToImage(pixelDataBytes, photometricInterpretation, bitsAllocated, rows, columns); String outputImagePath = "path_to_output_image.jpg"; ImageIO.write(image, "jpg", new File(outputImagePath)); System.out.println("Image extraction complete."); } catch (Exception e) { e.printStackTrace(); } } } ``` 以上代码使用dcm4che的`DicomInputStream`类读取dicom文件,并使用`DicomObject`类获取图片信息。然后,通过`ImageUtil.convertToImage`方法将获取的像素数据转换为`BufferedImage`对象。最后,使用`ImageIO.write`方法保存图片为JPEG格式。请根据实际情况根据路径填写正确的dicom文件路径和输出图片的路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值