原文地址:cvRound, cvFloor, cvCeil作者:叶以撒

函数 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,nbsp;cvFloor,nbsp;cvCeil相关推荐

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

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

  2. <OpenCV>cvRound()、cvFloor()、 cvCeil()函数

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

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

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

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

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

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

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

  6. OpenCv中的cv::Mat::create()函数,cvRound(),cvFloor(),cvCeil()函数的详解l

    文件说明: cv::create()函数的详解 函数原型: inline void Mat::create(int _rows, int _cols, int _type) inline void M ...

  7. OpenCV函数学习:cvRound,cvFloor,cvCeil

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

  8. 函数cvRound,cvFloor,cvCeil用法

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

  9. 【OpenCV3】cvRound()、cvFloor()、cvCeil()函数详解

    函数cvRound().cvFloor().cvCeil()都是按照一种舍入方式将浮点型数据转换为整型数据. cvRound():返回跟参数最接近的整数值,即四舍五入: cvFloor()  :返回不 ...

  10. OpenCV学习之cvRound()、cvFloor()、cvCeil()理解

    cvRound(float a):将浮点数a四舍五入取整,即返回跟参数最接近的整数值. cvFloor(float ,a) :将浮点数a向下取整,即返回不大于参数的最大整数. cvCeil(float ...

最新文章

  1. Windows mobile UI
  2. JFileChooser和FileFilter的使用
  3. 【深度学习】深度神经网络框架的INPUT PROCESS
  4. volatile修饰的变量_看了这篇volatile详细介绍,面试你会害怕?
  5. linux下升级python
  6. 每日一程-4. PyQt5-实现显示和业务逻辑分离
  7. A*寻路算法的探寻与改良(一)
  8. Java:Eclipse下载安装教程,以及Eclipse 安装汉化包的方法
  9. 简单漂亮的流程图模板分享
  10. 卸载python2.7_98%的人这样卸载软件,真的卸载干净了吗?这才是正确的卸载方式...
  11. 全球与中国冲压空气涡轮行业调查与未来发展趋势研究报告
  12. linux服务器的外网IP查阅方式
  13. plsql删除历史记录(重新打开文件)
  14. jmeter结果树为空_Jmeter查看结果树之查看响应的13种方法[详解]
  15. 快速找出两个Word文档之间的差别
  16. 湖南中医药大学成考2022年下学期网络课程学习与考试工作安排
  17. vscode连接模拟器运行flutter项目
  18. 2021全球十大外盘期货交易平台排名
  19. 微信电商小程序开发有什么好处呢
  20. OLE- 微软API—对象链接与嵌入

热门文章

  1. miniblink 封装duilib 控件 WkeWebkitUI 离屏渲染方式
  2. webp的js插件_网页webp解决方案
  3. 虚幻引擎(6)-过场动画
  4. 【MFO】飞蛾扑火优化算法(Moth Flame Optimization,MFO)理论分析与matlab性能仿真,使用CEC2017测试
  5. 新塘系列linux_身边的新塘+M0系列总结
  6. 《扬帆优配》10只新股本周来袭!芯片封测细分龙头来了
  7. CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?...
  8. C++如何定义一个函数指针
  9. 【重要】opencv实现立体匹配
  10. 永兴的笔记-OpenCV-14视频基本操作 1