C++ 如何使用GDCM读取多帧DICOM文件?

C++ 如何使用GDCM读取多帧DICOM文件?,c++,dicom,gdcm,C++,Dicom,Gdcm,我正在尝试使用gdcm库读取多帧DICOM文件 但我只能用以下代码读取单帧dicom文件数据: gdcm::ImageReader reader; reader.SetFileName(path); if(!reader.Read()) return false; const gdcm::Pixmap &image = reader.GetPixmap(); int length = image.GetBufferLength(); char *buffer = new char[l

我正在尝试使用gdcm库读取多帧DICOM文件

但我只能用以下代码读取单帧dicom文件数据:

gdcm::ImageReader reader;
reader.SetFileName(path); 
if(!reader.Read()) return false;

const gdcm::Pixmap &image = reader.GetPixmap();
int length = image.GetBufferLength();
char *buffer = new char[length];
image.GetBuffer(buffer);

如何访问其他帧?

如果您检查
length
的值,您会发现缓冲区是一个C样式的数组,包含单个块中的所有帧。我快速检查了文档,似乎没有内置工具。正如@malat所说,您可以访问缓冲区,您需要计算帧大小,然后自己逐个提取它们。您可能可以使用StreamImageReader,但很难找到示例。谢谢大家,最后,我将堆栈提取到单个文件中。@masoudkhanlo您能告诉我您是如何做到的吗?@mahmoud nezar sarhan,malat是对的,如果您打开一个多帧dicom文件,那么image.GetBufferLength()将与所有帧大小一样大。