disp.convertTo(disp8u, CV_8U, 255 / (numberOfDisparities*16.))

记录一下最近困惑我的问题~方便以后查阅
在学习立体匹配算法中BM算法时,出现在了关于类型转换的问题 :disp.convertTo(disp8u, CV_8U, 255 / (numberOfDisparities*16.))

在opencv中,如果是float形式,如果用imshow函数显示,只会显示像素值在0.0-1.0之间的,如果像素值大于1.0会显示为白像素,小于0.0显示为黑。为了可视化float形式的图像。可以将它的值归一化到0-1;
同理,如果用convertTo函数(src.convertTo(dst, type, scale, shift)创建指定类型的矩阵,当值超过显示范围时,则将它限制为最大值或者最小值。
所以当目标数据类型为cv_8U时,需要将值图像的像素值约束在0-255之间,所以就靠scale和shift来做缩放,假设矩阵A的最大值为max最小值为min,则

if (Min!=Max){ 
    A -= Min;
    A.convertTo(B,CV_8U,255.0/(Max-Min));
}

所以本段代码中,disp为视差图,最小视差默认为0,numberOfDisparities为最大视差与最小视差的差值,除以16则是根据邹老师的说法,得到的结果是CV_16S,需要除以16才能得到正确的视差值。

https://blog.csdn.net/qq_36355900/article/details/76034805

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值