V3D中使用的常见图像数据的每个像素强度一般是整数,有
- V3D_UINT8(datatype==1)
- V3D_UINT16(datatype==2)
这两种。
但有时图像处理后,可能会使用到一些带小数的“图”,即长宽高大小和原图像一样的一个数据表,类型为V3D_FLOAT32(datatype==4),例如做完距离变换后生成的距离图。下面介绍一些V3D_FLOAT32的数据使用方法:
1.从某个路径filePath中读取图像
(注意:V3D中V3D_FLOAT32类型的图像数据不能保存成tif格式,会变成乱码,需要保存成v3draw格式。因此读取数据的filePath中文件后缀需要是.v3draw)
float *img_msfm = 0;
V3DLONG sz_msfm[4];
int datatype_img_msfm;
simple_loadimage_wrapper(callback, filePath, ((unsigned char*&))img_msfm, sz_msfm, datatype_img_msfm);
可以看到,我们需要把这个数据变量定义为float* 型。如果像整形数据定义为unsigned char* 型,则调用时数值会为0。
如果不使用simple_loadimage_wrapper()这个函数,也可以像下面这样调用:
Image4DSimple *p_msfm = 0;
p_msfm = callback.loadImage(filePath);
V3DLONG sz_msfm[4];
sz_msfm