이미지를 uint16에서 uint8로 변환하는 방법을 찾으려고합니다. 기본적으로 float로 이미지를 읽어야하므로 unsigned char로 표시해야합니다.QT에서 16bit QImage를 8bit unsigned char로 변환하십시오.
float two_eight = pow(2.0,8);
float two_sixteen = pow(2.0,16);
QImage *qi = new QImage(imwidth, imheight, QImage::Format_RGB32);
for (int i = 0 ; i < imheight ; i++)
{
for (int j = 0 ; j < imwidth ; j++)
{
floatData[i*imwidth+j] = (two_eight* floatData[i*imwidth+j])/two_sixteen;
qi->setPixel(j,i,qRgb((unsigned char)floatData[i*imwidth+j],(unsigned char)floatData[i*imwidth+j],(unsigned char)floatData[i*imwidth+j]));
}
}
는 Qt는이를 수행하는 더 나은 방법이 있나요 :
나는 다음 있나요?
QImage는 채널당 16 비트 이미지를 지원하지 않습니다. – vines
@vines 제가 알고 있는데, 그 이유는 먼저 16 비트 데이터 ('inData' 벡터에 저장 됨)를 8 비트 데이터 ('outData' 벡터) 8 비트 데이터를 사용하여 QImage를 생성합니다. –
아, 죄송합니다. 서두르다. – vines