函数 cvRound, cvFloor, cvCeil 用一种舍入方法将输入浮点数转换成整数。 cvRound 返回和参数最接近的整数值。 cvFloor 返回不大于参数的最大整数值。cvCeil 返回不小于参数的最小整数值。在某些体系结构中该函数 工作起来比标准 C 操作起来还要快。

注意下面的编程技巧:

typedef union Cv32suf
{
    int i;
    unsigned u;
    float f;
}
Cv32suf;

CV_INLINE  int  cvFloor( double value )
{
#if CV_SSE2  
    __m128d t = _mm_load_sd( &value );
    int i = _mm_cvtsd_si32(t);
    return i - _mm_movemask_pd(_mm_cmplt_sd(t,_mm_cvtsi32_sd(t,i)));
#else
    int temp = cvRound(value);
    Cv32suf diff;
    diff.f = (float)(value - temp);
    return temp - (diff.i < 0);
#endif
}

CV_INLINE  int  cvCeil( double value )
{
#if CV_SSE2
    __m128d t = _mm_load_sd( &value );
    int i = _mm_cvtsd_si32(t);
    return i + _mm_movemask_pd(_mm_cmplt_sd(_mm_cvtsi32_sd(t,i),t));
#else
    int temp = cvRound(value);
    Cv32suf diff;
    diff.f = (float)(temp - value);
    return temp + (diff.i < 0);
#endif
}

#if CV_SSE2 可见,如果支持IPP,则会加速。

diff.f = (float)(value - temp);
return temp - (diff.i < 0);

这两句话的技巧:用diff.f保存浮点数。因为是联合体定义的diff,因此当再用diff.i解释那块内存时,可能数值会变化,但数值的正负不会变。

cvRound cvFloor cvCeil相关推荐

  1. cvRound, cvFloor, cvCeil

    函数 cvRound, cvFloor, cvCeil 用一种舍入方法将输入浮点数转换成整数. cvRound 返回和参数最接近的整数值. cvFloor 返回不大于参数的最大整数值. cvCeil ...

  2. cvRound, cvFloor, cvCeil 函数讲解

    函数cvRound,cvFloor,cvCeil 都是用一种舍入的方法将输入浮点数转换成整数: cvRound :四舍五入,返回跟参数最接近的整数值: cvFloor :向下取整,返回不大于参数的最大 ...

  3. cvFloor(),cvCeil(),cvRound()函数解释

    这三个函数都是利用舍入的方法将浮点数转换成整数. cvFloor():   向下取整,即返回不大于参数的最大整数值: cvCeil():     向上取整,即返回不小于参数的最小整数值: cvRoun ...

  4. cvRound cvFloor cvCei 和 int

    cvRound 返回和参数最接近的整数值.如 1.2--->1   1.8--->2 cvFloor 返回不大于参数的最大整数值.如1.8--->1  -5.6--->-6 c ...

  5. 【杂谈opencv】OpenCV中的cvRound()、cvFloor()、 cvCeil()函数讲解

    功能:cvRound(), cvFloor(), cvCeil()函数讲解. 函数cvRound,cvFloor,cvCeil 都是用一种舍入的方法将输入浮点数转换成整数: cvRound():返回跟 ...

  6. OpenCV笔记11——cvRound()、cvFloor()、 cvCeil()函数讲解

    功能:cvRound(), cvFloor(), cvCeil()函数讲解. 函数cvRound,cvFloor,cvCeil 都是用一种舍入的方法将输入浮点数转换成整数: cvRound():返回跟 ...

  7. OpenCV中的cvRound()、cvFloor()、 cvCeil()函数讲解

    版权声明:本文为博主原创文章,欢迎阅读与转载,转载请注明出处与链接. https://blog.csdn.net/sinat_36264666/article/details/78849125 功能: ...

  8. OpenCV中的cvRound()、cvFloor()、 cvCeil()函数

    版权声明:本文为CSDN博主「空晴拜小白」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/sinat_3626 ...

  9. opencv 浮点数取整 cvFloor cvRound cvCeil 比较

    http://www.voidcn.com/article/p-fdbhdzxi-vg.html 函数 cvRound, cvFloor, cvCeil 用一种舍入方法将输入浮点数转换成整数. cvR ...

最新文章

  1. Springboot的部分依赖及作用
  2. Windows Server 2008 R2 之二十九故障转移群集(一)(
  3. linux驱动入口函数执行了,probe函数没有执行排查
  4. 开机显示输入最佳预设值_开机密码忘了怎么解决
  5. Ubuntu Apache 服务之 PHP 配置
  6. inx的c语言表达式,Spninx 解决的问题
  7. js处理16进制hex转str出现的中文乱码问题
  8. 树莓派 | threading01 - 创建两个子线程同时运行,两个线程各负责控制一个LED灯以不同的频率闪烁
  9. ecshop网站后台功能之系统管理
  10. 基于界面自动化测试框架的发展
  11. 全面讲解 Handler机制原理解析 (小白必看)
  12. 第二课: 雷电模拟器的多开和打开
  13. Java成神之路——技术栈
  14. 在PS中如何旋转箭头
  15. 服务器修改上传图片大小限制,修改IIS7默认上传大小限制
  16. 基于MATLAB改进Otsu阈值分割的车道线检测
  17. SpringCloud 小案例 -- SpringCloud netfilx 使用
  18. 本地连接受限制或无连接怎么办
  19. 2020工业互联网平台安全白皮书
  20. 如何更好的做产品决策

热门文章

  1. 有符号数和无符号数详解(2)补码详解
  2. JS深入之你知道点号(.)是怎么玩的吗?(二)
  3. R语言 : RJDBC 连接 h2数据库,绘基金净值图
  4. vivox6s Android7.1,vivo计划为7款机型升安卓7.1 今日公测
  5. http://www.xueh188.top/index.php/archives/36/
  6. ZOJ1654.Place the Robots放置机器人——最大独立集
  7. Topology Shapes of OpenCascade BRep
  8. 关于细粒度与粗粒度的理解
  9. wordpress小工具自定义Html,WordPress添加自定义小工具
  10. asp html 生成图片,asp无组件上传图片并生成缩略图