Dicom 파일에서 이미지를 인쇄하려고합니다. 원시 데이터를 convertToFormat_RGB888 함수에 전달합니다. 내가 아는 한 Qt는 단색 16 비트 이미지를 처리 할 수 없습니다.Qt에서 uint16 단색 이미지를 인쇄하는 방법?
...
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);
...
이 코드는 여기에서 약간의 적응이다 ...이 내부로 들어가,이 함수 내부 http://imageshack.us/photo/my-images/839/16bitc.jpg/
bool convertToFormat_RGB888(gdcm::Image const & gimage, char *buffer, QImage* &imageQt)
:
여기 (여기 JPG로 변환) 원본 이미지의 : gdcm.sourceforge.net/2.0/html/ConvertToQImage_8cxx-example.html
하지만 원래 가지고있는 실행 오류. 적어도 내 것을 사용하면 이미지를 얻지 만 같은 것은 아닙니다. http://imageshack.us/photo/my-images/204/8bitz.jpg/
내가 잘못 뭐하는 거지 :
여기에 새 이미지 (여기 JPG로 변환)입니다? 감사합니다. .
첫 번째 제안을 사용하면 다음 이미지를 얻을 수 있습니다. http://imageshack.us/photo/my-images/802/answer.jpg/ 훨씬 더 어두워 지지만 원하는 이미지에 더 가깝습니다. 이제 색상 표를 변경하려고하는데 잃어 버렸습니다. Qt의 설명서와 Google을 읽고이를 개선 할 수 있는지 알아 보겠습니다. –
QVector 표 (256)로 색상 표를 변경하려고했습니다.for (int i = 0; i <256; ++ i) { table [i] = qRgb (i, i, i); } imageQt-> setColorTable (table); 나는 같은 이미지를 얻는다. 나는 붙어있다. –
buffer16의 타입을 unsigned short로 변경하는 것은 어떻습니까? 서명되지 않은 서명에서부터 서명 된 서명 유형이 아마도 엉망이되었습니다. –