convert 32-bit float image raw data to 16 bit image raw data

hugyxh 2017-08-07 09:31:44
如题,怎么将32-bit float image raw data 转换成16 位图像
32位图像数据如下:
0: 1.08281
1: 1.03642
2: 1.02189
3: 1.01915
4: 1.0213
5: 1.01993
6: 1.02583
7: 1.02643
8: 1.01565
9: 1.00891
10: 0.993469
11: 1.00151
12: 1.
13: 1.00377
14: 1.01837
15: 1.01954
16: 1.01818
17: 1.00815
18: 1.00132
19: 0.998314
20: 1.00529
21: 1.01256
22: 1.01179
23: 1.01565
24: 1.02287
25: 1.01993
26: 1.01025
27: 1.00245
28: 0.997753
.
.
.
...全文
385 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-08-08
  • 打赏
  • 举报
回复
大概应该这样吧:
double *pData=(double *)malloc(DataSize*2);
float *pPixData1=(float*)malloc(DataSize);
...
fread((void *)pData,sizeof(double),DataSize*2/sizeof(double),f);
for (i=0;i<DataSize) pPixData1[i]=(float)(pData[i])
...
hugyxh 2017-08-08
  • 打赏
  • 举报
回复
我是把32位float型图像数据读到一个float *pPixData1=(float*)malloc(DataSize);得到的数据,就不知道怎么处理显示啦
以前读取16位integer 我是用的unsigned short *pPixData1=(unsigned short*)malloc(DataSize);,然后调节窗宽窗位 再显示
赵4老师 2017-08-07
  • 打赏
  • 举报
回复
电脑内存或文件内容或传输内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容或传输内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息…… 浮点数格式 http://bbs.csdn.net/topics/390676437
赵4老师 2017-08-07
  • 打赏
  • 举报
回复
你顶楼举的例子数据,已经谈不上什么32位和16位浮点数了,已经是人能看懂的直接用小数表示的浮点数了,和实际保存在文件中是32位double或16位float已经没关系了。
hugyxh 2017-08-07
  • 打赏
  • 举报
回复
谢谢赵老师,还是不明白怎么把32位浮点型图像转化成16位图像数据,谢谢

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧