C# 彩色PCD查看器
我想以C# 彩色PCD查看器,c#,rgb,point-cloud-library,C#,Rgb,Point Cloud Library,我想以.pcd文件格式()显示黄色的3D点。使用下面的C代码从黄色(R:255,G:255,B:0)检索PCD颜色格式 字节红色=255; 字节绿色=255; 字节蓝色=0; int rgb=((int)red)我不使用C#但是我相信从int到float的转换是保留值而不是位结构。i、 e.你不是在重新解释,而是在转换数字 搜索此网站,我相信您需要的是位转换器: 问题解决了。只需将PCD颜色结构与Integer一起使用,而不是Float(需要修改PCD文件结构以使用带整数的颜色)。通过这种方式,
.pcd
文件格式()显示黄色的3D点。使用下面的C代码从黄色(R:255,G:255,B:0)检索PCD颜色格式
字节红色=255;
字节绿色=255;
字节蓝色=0;
int rgb=((int)red)我不使用C#但是我相信从int到float的转换是保留值而不是位结构。i、 e.你不是在重新解释,而是在转换数字
搜索此网站,我相信您需要的是位转换器:
问题解决了。只需将PCD颜色结构与Integer
一起使用,而不是Float
(需要修改PCD文件结构以使用带整数的颜色)。通过这种方式,我不需要重新解释从int
到float
的转换,我还发现实际的颜色结果是相同的绿色和蓝色值,但红色值小于128。您如何设置点的颜色?i、 e.在上面,您计算颜色,但未设置点的颜色。那么您是否再次保存到PCD?是的。我将点保存到PCD文件,如(x、y、z、颜色)。例:1001001001.677696E+7。很明显,您打印的浮点值与int值相同,但不应相同。如果位结构相同,那么您将得到一个非常不同的值,因为解释为浮点的位字符串与解释为int的相同位字符串非常不同。
byte red = 255;
byte green = 255;
byte blue = 0;
int rgb = ((int)red) << 16 | ((int)green) << 8 | ((int)blue);
float rgb2 = (float)rgb;