現在我有一些CT的原始影像,3072*1944的大小,兩位為一個像素,通過讀取賦值之后并不能正確顯示,求幫助!(image設定的格式是RGB16,圖片是灰度圖但是Grayscale8是8位的,試了也沒有用)
unsigned short * Ii = (unsigned short*)malloc(vol*sizeof(unsigned short));
size_t size =fread(Ii,sizeof(unsigned short),vol,fp) ;
int k=0;
for(int j=0;j<1944;j++){
for(int i=0;i<3072;i++){
QRgb Value = qRgb(Ii[k],Ii[k],Ii[k]);
image.setPixel(i,j,Value);
k++;
}
}
ui->label_2->setPixmap(QPixmap::fromImage(image));
uj5u.com熱心網友回復:
QImage image(3072, 1944, QImage::Format_RGB16);size_t size =fread(bits,sizeof(unsigned short),vol,fp);
類似這樣試試,讀前應該確認一下vol*2應該等于image.sizeInBytes()
還有確認一下你的圖片格式,16位一個像素有多種可能,除了RGB6,還有RGB555,ARGB4444。
uj5u.com熱心網友回復:
補充一下,想起來16bit還有一個很有可能的格式,就是YUV422如果是YUV的話就不能直接用在QImage上了,要先把資料轉成RGB才行
uj5u.com熱心網友回復:
image后面無法呼叫sizeInBytes()這個函式,然后我想問一下怎么才能看圖片具體格式,之前就想看了,但是找不到方法。uj5u.com熱心網友回復:
只從raw資料沒有辦法知道格式的,你要問資料的提供方或者設備提供方或者看說明檔案之類的或者就是自己一個個試,就我的經驗16bit的RGB不常用,YUV的可能性更大
sizeInBytes()是從5.10開始有的,如果你用的是舊的版本,就用byteCount()
uj5u.com熱心網友回復:
可以下載一個Raw Viewer之類的Raw圖片查看器,各種格式一個個試轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/42418.html
標籤:Qt
