Matlab的round函数和OpenCV的cvRound函数的区别

Matlab的round函数和OpenCV的cvRound函数都是获得浮点数最近的整数。

今天在调试项目时发现Matlab代码运行结果和C++代码运行结果略有出入,最后定位到Matlab的round函数和OpenCV的cvRound函数对于.5的处理略有区别:

以下为测试round函数的Matlab代码:

d1 = 0.5;
d2 = -0.5;
d3 = 100.5;
d4 = -100.5;

n1 = round(d1);
n2 = round(d2);
n3 = round(d3);
n4 = round(d4);

fprintf(1, 'round(%.1f) = %d\n', d1, n1);
fprintf(1, 'round(%.1f) = %d\n', d2, n2);
fprintf(1, 'round(%.1f) = %d\n', d3, n3);
fprintf(1, 'round(%.1f) = %d\n', d4, n4);

运行结果为:

 

以下为测试cvRound函数的C代码:

    double d1 = 0.5;
    double d2 = -0.5;
    double d3 = 100.5;
    double d4 = -100.5;

    int n1 = cvRound(d1);
    int n2 = cvRound(d2);
    int n3 = cvRound(d3);
    int n4 = cvRound(d4);

    printf("cvRound(%.1f) = %d\n", d1, n1);
    printf("cvRound(%.1f) = %d\n", d2, n2);
    printf("cvRound(%.1f) = %d\n", d3, n3);
    printf("cvRound(%.1f) = %d\n", d4, n4);

运行结果为:

 

Matlab的round函数将0.5向上入,OpenCV的cvRound函数将0.5向下舍。

根据“四舍五入”的规则,Matlab的round函数是不是更妥当呢?

转载于:https://www.cnblogs.com/likethebird/p/5844806.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值