我试图转换从gdcm图像阅读器读取的dicom图像,该图像阅读器的光度解释为'monochrome2',像素格式为unsigned int 16或uint16,我尝试了以下代码,但没有提供所需的图像,请帮忙。
QVector<QRgb> table(2);
for(int c=0;c<256;c++)
{
table.append(qRgb(c,c,c));
}
std::cout << "this is the format UINT16" << std::endl;
int size = dimX*dimY*2; // length of data in buffer, in bytes
quint8 * output = reinterpret_cast<quint8*>(buffer);
const quint16 * input = reinterpret_cast<const quint16*>(buffer);
do {
*output++ = (*input) >> 8;
} while (size -= 2);
imageQt = new QImage(output, dimX, dimY, QImage::Format_Indexed8);
imageQt->setColorTable(table);
问候
答案 0 :(得分:0)
我想我看到了你的问题。您正在编写数据以输出并在指示时将指针递增到输出。
然后创建指向位图末尾的QImage。
您需要执行以下操作:
imageQt = new QImage( reinterpret_cast< uchar* >( buffer ), dimX, dimY, QImage::Format_Indexed8);
编辑:您也不要前进输入指针。
您需要将内循环更改为以下内容:
*output++ = (*input++) >> 8;