我正在尝试从 Dicom 文件打印图像。我将原始数据传递给 convertToFormat_RGB888 函数。据我所知,Qt 无法处理单色 16 位图像。
这是原始图像(在此处转换为 jpg):http: //imageshack.us/photo/my-images/839/16bitc.jpg/
bool convertToFormat_RGB888(gdcm::Image const & gimage, char *buffer, QImage* &imageQt)
在这个函数里面,我进入这个......
...
else if (gimage.GetPixelFormat() == gdcm::PixelFormat::UINT16)
{
short *buffer16 = (short*)buffer;
unsigned char *ubuffer = new unsigned char[dimX*dimY*3];
unsigned char *pubuffer = ubuffer;
for (unsigned int i = 0; i < dimX*dimY; i++)
{
*pubuffer++ = *buffer16;
*pubuffer++ = *buffer16;
*pubuffer++ = *buffer16;
buffer16++;
}
imageQt = new QImage(ubuffer, dimX, dimY, QImage::Format_RGB888);
...
这段代码是从这里稍微改编的:gdcm.sourceforge.net/2.0/html/ConvertToQImage_8cxx-example.html
但原来的我得到了一个执行错误。使用我的至少我得到一个图像,但它不一样。
这是新图像(在此处转换为 jpg):http: //imageshack.us/photo/my-images/204/8bitz.jpg/
我究竟做错了什么?谢谢。