使用DPU计算双目视差图时,输出结果数据元素格式为 S10Q6(1bit符号位 + 9bit整数位 + 6bit小数位),需要将数据转换为float类型。
此数为定点数Q6,符号位 0表示数值为正, 1则表示数值为负。
计算规则:去除符号位后转换为整数,再除以2的6次方,再乘以正负符号
#include
#include
using namespace std;
int main()
{
int x = 0b1011001010011001;
int j = 0b1000000000000000;
int k = 0b0111111111111111;
bitset<16> b0(x);
std::cout << b0 << endl; // 输出二进制
int a = x & j; // 0表示数值为正, l则表示数值为负
int b = a > 0 ? -1 : 1;
int c = x & k;
float d = c / pow(2, 6);
float e = d * b;
std::cout << "e: " << e << std::endl;
}
参考链接:嵌入式DSP开发的定点数和浮点数 4.1.2.2 定点数到浮点数
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)