histogram不是SHOT352的成员
时间: 2024-02-15 14:04:18 浏览: 59
Histogram.rar_histogram
非常抱歉,您是对的。`pcl::SHOT352`中没有`histogram`成员,而是使用了`descriptor`成员来存储352个二进制位。因此,在计算两个`pcl::SHOT352`类型的二进制数的异或结果时,可以使用以下代码:
```
pcl::SHOT352 descriptor1 = shot1->at(i);
pcl::SHOT352 descriptor2 = shot2->at(i);
pcl::SHOT352 diff;
for(int j = 0; j < 352; j++) // 352是二进制数的位数
{
if((descriptor1.descriptor[j/8] & (1 << (j%8))) != (descriptor2.descriptor[j/8] & (1 << (j%8))))
{
diff.descriptor[j/8] |= (1 << (j%8));
}
}
```
在上面的代码中,`diff`是一个新的`pcl::SHOT352`类型的变量,`j`是循环变量,遍历每个二进制位的下标。`descriptor1.descriptor[j/8]`和`descriptor2.descriptor[j/8]`分别表示两个二进制数中第`j`个二进制位所在的`uint8_t`类型数据。`&`和`|`是按位与和按位或操作符,用于设置`diff.descriptor[j/8]`中第`j`个二进制位的值。如果两个二进制数在第`j`个二进制位的值不同,那么将`diff.descriptor[j/8]`中第`j`个二进制位的值设置为1,否则保持不变。最终,`diff`中就存储了`descriptor1`和`descriptor2`两个二进制数的按位异或结果。
阅读全文