linux系统安装gdcm的python库

Digital Imaging and Communications in Medicine (DICOM) 文件是医学上常用的一种数据存储格式,gdcm库可以方便地对数据进行读取。

1、Ubuntu系统
https://launchpad.net/ubuntu/+source/gdcm
可以直接安装

sudo apt-get install python-gdcm

这种安装方法会直接给系统的python(/usr/bin)下面那个python安装。如果只是简单地使用,这样就够了。

2、从源码安装
我是用的Anaconda的python,有多个虚拟环境,所以上文这种安装方式就不太适用。所以我要从源码安装。
2.1 swig安装
https://github.com/swig/swig 下载源码并解压

  cd swig/
  ./autogen.sh
  ./configure
  make -j8
  sudo make install

2.2 编译安装gdcm
先下载源码并解压:
https://sourceforge.net/projects/gdcm/files/gdcm%202.x/
注意!!
由于我们是有多个虚拟环境的,在运行下面的步骤之前,要切换到你想要安装的那个虚拟环境

conda activate XXX

这一步很重要,因为在下面编译的时候,swig会根据你的python版本来创建python库。尤其是我们的虚拟环境python2和python3共存的时候,如果你当前的python是python3,编译好了之后想要放到python2里面用,就是不行的。

mkdir gdcm-build
cd gdcm-build
cmake ../gdcm-2.8.9 -DGDCM_BUILD_SHARED_LIBS=ON -DGDCM_WRAP_PYTHON=ON -DGDCM_DOCUMENTATION=OFF -DGDCM_BUILD_EXAMPLES=OFF -DGDCM_BUILD_TESTING=OFF
make -j8
sudo make install

接下来,就是把我们编译好的文件拷贝到对应的site-packages路径中。如果不知道你的路径是什么,可以再当前的虚拟环境中运行python,然后执行:

from distutils.sysconfig import get_python_lib
print(get_python_lib())

在这里插入图片描述
这样就可以看到我们的site-package路径了。最后我们把编译好的文件拷贝到该目录中

cd bin
sudo cp gdcm.py gdcmswig.py _gdcmswig.so /上面获取的路径/site-packages/

2.3* cmake版本问题
如果在执行

cmake ../gdcm-2.8.9 -DGDCM_BUILD_SHARED_LIBS=ON -DGDCM_WRAP_PYTHON=ON -DGDCM_DOCUMENTATION=OFF -DGDCM_BUILD_EXAMPLES=OFF -DGDCM_BUILD_TESTING=OFF

时候报错,提示cmake版本过低,需要自行更新cmake版本。参考:
https://blog.csdn.net/TwT520Ly/article/details/80496351

3.测试安装是否成功
在python中执行

import gdcm

未报错,则提示安装成功。

4.参考文章
本文主要参考这篇文章完成
https://blog.csdn.net/qq_16949707/article/details/70209492

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GDCM(Grassroots DICOM)是一个开源的DICOM(数字成像与通信医疗信息)库,它支持读取和写入DICOM文件。如果你需要从ZIP文件中读取DICOM文件,可以使用GDCM的`gdcm::IPPSorter`类和`gdcm::ImageReader`类来实现。 首先,你需要使用`gdcm::IPPSorter`类将DICOM文件按照其图像位置(Image Position)信息进行排序。然后,你可以使用`gdcm::ImageReader`类从ZIP文件中读取DICOM文件。以下是一个示例代码: ``` #include "gdcmReader.h" #include "gdcmImageReader.h" #include "gdcmIPPSorter.h" int main(int argc, char* argv[]) { // 读取ZIP文件 gdcm::Reader reader; reader.SetFileName("example.zip"); if (!reader.Read()) { std::cerr << "Failed to read ZIP file" << std::endl; return 1; } // 使用IPPSorter类排序DICOM文件 gdcm::IPPSorter sorter; sorter.SetComputeZSpacing(true); sorter.SetZSpacingTolerance(1e-3); sorter.Sort(reader.GetFileSet()); // 读取第一个DICOM文件 gdcm::ImageReader image_reader; image_reader.SetFileName(sorter.GetFirstImage().c_str()); if (!image_reader.Read()) { std::cerr << "Failed to read DICOM file" << std::endl; return 1; } // 处理DICOM图像数据 // ... return 0; } ``` 在上面的代码中,`gdcm::Reader`类用于读取ZIP文件,`gdcm::IPPSorter`类用于按照图像位置信息进行排序,`gdcm::ImageReader`类用于读取DICOM文件。你需要根据自己的需求来处理DICOM图像数据。注意,以上代码仅仅是一个示例,可能需要根据实际情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值