dicom - 如何使用 DCMTK 3.6.1 加载 dicom 图像

标签 dicom dcmtk

我正在尝试使用 DCMTK 以及文档中提供的示例代码加载单色 dicom 图像文件

http://support.dcmtk.org/docs/mod_dcmimgle.html

我尝试编译的文件是 dcmtest.cxx,其中包含以下代码:

#include "dcmtk/dcmimgle/dcmimage.h"
#include "dcmtk/dcmimgle/dipixel.h"
#include "dcmtk/dcmimgle/diimage.h"
#include "dcmtk/dcmimgle/dimo1img.h"
#include "dcmtk/dcmimgle/dimo2img.h"
#include <iostream>
using namespace std;

int main()
{

    DicomImage *image = new DicomImage("test.dcm");
    if (image != NULL)
    {
      if (image->getStatus() == EIS_Normal)
      {
        if (image->isMonochrome())
        {
          image->setMinMaxWindow();
          Uint8 *pixelData = (Uint8 *)(image->getOutputData(8 /* bits */));
          if (pixelData != NULL)
          {
            /* do something useful with the pixel data */
          }
        }
      } else
        cerr << "Error: cannot load DICOM image (" << DicomImage::getString(image->getStatus()) << ")" << endl;
    }

    delete image;
}

我正在尝试编译代码:

g++ dcmtest.cxx -DHAVE_CONFIG_H -I$HOME/dcmtk361_std/include -L$HOME/dcmtk361_std/lib -pthread -ldcmdata -lz -loflog -lofstd -o main

我从

得到的

How to use Dcmtk in Qt?

但是,我收到错误

/tmp/cchsrh2D.o: In function `main':
dcmtest.cxx:(.text+0x31): undefined reference to `DicomImage::DicomImage(char const*, unsigned long, unsigned long, unsigned long)'
dcmtest.cxx:(.text+0xaf): undefined reference to `DicomImage::getString(EI_Status)'
/tmp/cchsrh2D.o: In function `DicomImage::setMinMaxWindow(int)':
dcmtest.cxx:(.text._ZN10DicomImage15setMinMaxWindowEi[_ZN10DicomImage15setMinMaxWindowEi]+0x6b): undefined reference to `DiMonoImage::setMinMaxWindow(int)'
collect2: error: ld returned 1 exit status

我尝试包含库的任何相关部分,但未能解决该问题。我正在运行 Ubuntu 16.04 并从最新快照下载 DCMTK http://dicom.offis.de/dcmtk.php.en

你知道是什么原因导致编译问题吗?

最佳答案

正如 kritzel_sw 已经写的:当您使用 dcmimgle module 中的 DicomImage 类时,您还必须将 dcmimgle 库添加到链接器调用中。顺便说一句,将“dcmtk/dcmimgle/dcmimage.h” header 包含到示例程序中就足够了,即不需要其他 DCMTK header 文件。

关于dicom - 如何使用 DCMTK 3.6.1 加载 dicom 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41669590/

相关文章:

DICOM C-GET 与 C-MOVE

c++ - 如何在 C++ 中读取 dicom 像素

ios - 如何在 iOS 上首次编译 DCMTK?

c# - System.Numerics 在 VS2008 中的使用

Matlab 3D 体积可视化 - dicom 文件

matlab - Dicom:Matlab 与 ImageJ 灰度级

python - 如何将 dicom 图像分割成图 block ?

c++ - 如何从字节创建 DICOM 图像 (DCMTK)

c++ - 使用 dcmtk 将 bmp 文件另存为 dicom

php - DICOM 工作列表在 DCMTK wlmscpfs 中返回不匹配