如何使用 DCMTK 3.6.1 加载 dicom 图像
How to load a dicom image using DCMTK 3.6.1
我正在尝试使用文档中提供的示例代码使用 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 并从 http://dicom.offis.de/dcmtk.php.en
的最新快照下载了 DCMTK
您知道导致编译问题的原因吗?
正如 kritzel_sw 已经写道:当您使用 dcmimgle module 中的 DicomImage
class 时,您还必须将 dcmimgle
库添加到您的链接器调用。顺便说一下,将 "dcmtk/dcmimgle/dcmimage.h" header 包含到您的示例程序中应该就足够了,即不需要其他 DCMTK header 文件。
我正在尝试使用文档中提供的示例代码使用 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 并从 http://dicom.offis.de/dcmtk.php.en
的最新快照下载了 DCMTK您知道导致编译问题的原因吗?
正如 kritzel_sw 已经写道:当您使用 dcmimgle module 中的 DicomImage
class 时,您还必须将 dcmimgle
库添加到您的链接器调用。顺便说一下,将 "dcmtk/dcmimgle/dcmimage.h" header 包含到您的示例程序中应该就足够了,即不需要其他 DCMTK header 文件。