使用DPU计算双目视差图时,输出结果数据元素格式为 S10Q6(1bit符号位 + 9bit整数位 + 6bit小数位),需要将数据转换为float类型。
此数为定点数Q6,符号位 0表示数值为正, 1则表示数值为负。
计算规则:去除符号位后转换为整数,再除以2的6次方,再乘以正负符号
#include <bitset>
#include <iostream>
using namespace std;
int main()
{
int x = 0b1011001010011001;
int j = 0b1000000000000000;
int k = 0b0111111111111111;
bitset<16> b0(x);
std::cout << b0 << endl; // 输出二进制
uint16_t a = x & j; // 0表示数值为正, l则表示数值为负
int b = a > 0 ? -1 : 1;
int c = x & k;
float d = c * 1.0 / pow(2, 6);
float e = d * b;
std::cout << "e: " << e << std::endl;
}
参考链接:
嵌入式DSP开发的定点数和浮点数
4.1.2.2 定点数到浮点数
版权声明:本文为weixin_42428854原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。