zoukankan      html  css  js  c++  java
  • OpenCV 3-2.4-工具函数

    cv::alignPtr()

    template<T> T* cv::alignPtr(              // 返回T*类型指针
      T*  ptr,                                // 指针声明
      int n   = sizeof(T)                     // 指向内存的大小,为2的整数次幂大小
    );
    

    给定任意类型的指针,此函数将根据以下计算计算相同类型的指针:

    (T*)(((size_t)ptr + n+1) & -n)
    

    cv::alignSize()

    size_t cv::alignSize(                     // >='sz'且被'n'整除的最小整数
      size_t sz,                              // buffer大小
      int n   = sizeof(T)                     // 指向内存的大小,为2的整数次幂大小
    );
    

    给定数字n(通常是sizeof()的返回值)和缓冲区sz的大小,cv::alignSize()计算此缓冲区为了包含大小为n的整数个对象而应达到的大小,即大于或等于sz但被n整除的最小数字。使用以下公式:

    (sz + n-1) & -n
    

    cv::allocate()

    template<T> T* cv::allocate(              // 返回指向被分配内存的指针
      size_t sz                               // buffer大小是sizeof(T)的整数倍
    );
    

    函数cv::allocate()的功能类似于new的数组形式,因为它分配由类型Tn个对象组成的数组,调用每个对象的默认构造函数,并返回指向数组中第一个对象的指针。

    cv::deallocate()

    template<T> void cv::deallocate(
      T*     ptr,                         // 返回指向被释放内存的指针
      size_t sz                           // buffer大小是sizeof(T)的整数倍
    );
    

    函数cv::deallocate()的功能类似于delete的数组形式,因为它释放由类型T的n个对象组成的数组,并为每个对象调用析构函数。cv::deallocate()用于释放使用cv::allocate()分配的对象。传递给cv::deallocate()的元素数量n必须与最初使用cv::allocate()分配的对象数量相同。

    cv::fastAtan2()

    float cv::fastAtan2(
      float y,
      float x
    );
    

    此函数计算xy坐标的反正切值,并返回从原点到该点的角度。度数在0.0360.0之间,包括0.0,但不包括360.0

    cvCeil()

    int cvCeil(
      float x
    );
    

    给定一个float xcvCeil()计算不小于x的最小整数。如果输入值超出了32位整数的范围,则结果为垃圾值。

    cv::cubeRoot()

    float cv::cubeRoot(
      float x
    );
    

    此函数计算参数x的立方根。x为负的时候返回值为负。

    cv::CV_Assert()CV_DbgAssert()

    // example
    CV_Assert( x!=0 )
    

    cv::CV_Assert()是一个宏,它将测试传递给它的表达式,如果表达式的计算结果为false(或0),它将抛出异常。如果仅在调试中进行测试,则使用CV_DbgAssert()

    cv::CV_Error()CV_Error_()

    // example
    CV_Error( ecode, estring )
    CV_Error_( ecode, fmt, ... )
    

    cv::CV_Error()接收错误代码参数ecode和 const 字符串estring,然后将它们打包到cv::Exception中,然后传递给cv::error()进行处理。如果需要动态构造消息字符串,则使用变量宏CV_Error_()CV_Error_()接受与cv::CV_Error()相同的ecode,但随后需要一个spintf()样式的格式字符串,后跟可变数量的参数,这与sprintf()一样。

    cv::error()

    void cv::error(
      const cv::Exception& ex                 // 要抛出的异常
    );
    

    此函数主要从cv::CV_Error()CV_Error_()调用。如果代码是在非 debug 版本中编译的,它将抛出异常ex。如果代码是在 debug 版本中编译的,它将故意引发内存访问冲突,以便堆栈和所有参数都可被调试器查看。

    一半呢不会直接调用cv::error(),而是依赖宏cv::CV_Error()CV_Error_()抛出错误。这些宏获取异常中显示的信息,打包这些信息,并将产生的异常传递给cv::error()

    cv::fastFree()

    void cv::fastFree(
      void* ptr                               // 指向被释放的内存
    );
    

    此函数释放使用cv::fastMalloc()分配的缓冲区(下面将介绍)。

    cv::fastMalloc()

    void* cv::fastMalloc(
      size_t size
    );
    

    cv::fastMalloc()的工作方式与熟悉的malloc()类似,不同之处在于它通常速度更快,并且可以对齐缓冲区大小。这意味着如果传递的缓冲区大小大于16字节,则返回的缓冲区将与16字节边界对齐。

    cvFloor()

    int cvFloor(
      float x
    };
    

    cvCeil()类似,但是cvFloor()返回不大于x的最大整数。如果输入值超出32位整数可表示的范围,则结果为垃圾值。

    cv::format()

    string cv::format(                        // 返回 STL-string
      const char* fmt,                        // 格式化字符串,比如sprintf()
      ...                                     // 参数,比如sprintf()
    );
    

    这个函数本质上与标准库中的sprintf()相同,但它不需要调用方提供字符缓冲区,而是构造一个STL字符串对象并返回该对象。它对于格式化Exception()构造函数(它的参数中需要STL字符串)的错误消息特别方便。

    cv::getCPUTickCount()

    int64 cv::getCPUTickCount( void );  
    

    这个函数返回CPU节拍数。但是,此函数的返回值在许多体系架构上可能很难解释。具体地说,因为在多核系统上,线程可能在一个核上休眠,而在另一个核上唤醒,所以对cv::getCPUTickCount()的两个后续调用的结果之间的差异可能完全没有意义。因此,除非确定自己知道自己在做什么,否则最好使用cv::getTickCount()进行计时测量。此函数最适合初始化随机数生成器之类的任务。

    cv::getNumThreads()

    int cv::getNumThreads( void );
    

    返回OpenCV当前线程数。

    cv::getOptimalDFTSize()

    int cv::getOptimalDFTSize( int n );
    

    当调用cv::dft()时,OpenCV用来计算转换的算法对传递给cv::dft()的数组大小极为敏感。函数cv::getOptimalDFTSize()将传递给cv::dft()的数组的大小作为参数,并返回应该传递给cv::dft()的数组的大小。OpenCV使用此信息创建一个更大的数组,你可以将数据复制到该数组中,并用零填充其余的部分。

    cv::getThreadNum()

    int cv::getThreadNum( void );
    

    如果您的OpenCV库是使用OpenMP支持编译的,它将返回当前执行的线程的索引(从0开始)。

    cv::getTickCount()

    int64 cv::getTickCount( void ); 
    

    此函数返回相对于某些依赖于体系结构的CPU节拍数。每个街拍的时间可以通过cv::getTickFrequency()计算(下面将介绍)。对于大多数计时应用程序,此函数比cv::getCPUTickCount()更可取,因为它不受底层问题的影响,例如线程运行在哪个内核上,以及自动调节cpu频率(大多数现代处理器出于电源管理原因这样做)。

    cv::getTickFrequency()

    double cv::getTickFrequency( void );
    

    cv::getTickCount()用于计时分析时,节拍的确切含义通常取决于体系结构。函数cv::getTickFrequency()计算时钟时间(即秒)和节拍之间的转换。

    要计算发生某些特定事件(如执行函数)所需的时间,只需在函数调用前后调用cv::getTickCount(),两数相减,再除以cv::getTickFrequency()的值。

    cvIsInf()

    int cvIsInf( double x );  
    

    如果x为正负无穷大,则cvIsInf()
    的返回值为1,否则为0。无穷大测试是 IEEE754 标准的测试。

    cvIsNaN()

    int cvIsNan( double x );  
    

    如果x“不是数字”,则cvIsNaN()的返回值为1,否则返回值为0。NAN 测试是 IEEE754 标准测试。

    cvRound()

    int cvRound( double x );
    

    计算最接近x的整数。如果输入值超出了32位整数可表示的范围,则结果为垃圾值。

    cv::setNumThreads()

    void cv::setNumThreads( int nthreads );
    

    编译OpenCV时启用OpenMP选项,此函数设置OpenCV将在并行OpenMP区域中使用的线程数。线程数的默认值是CPU上的逻辑核心数(即,如果我们有四个核心,每个核心有两个超线程,则默认情况下将有八个线程)。如果将nthread设置为0,则线程数将变为默认值。

    cv::setUseOptimized()

    void cv::setUseOptimized( bool on_off );
    

    硬件层的优化,最好在最上层调用开启。

    cv::useOptimized()

    bool cv::useOptimized( void );  
    

    检查全局标志的状态——允许使用高性能优化的标志。只有在当前启用了这些优化时,才会返回True;否则,此函数将返回False

  • 相关阅读:
    关于使用MySQL语法ON DUPLICATE KEY UPDATE单个增加更新及批量增加更新的sql
    关于ESB(企业服务总线)
    [SoapUI] 在SoapUI中通过Groovy脚本执行window命令杀掉进程
    [SoapUI] 判断工程下某个文件是否存在,存在就删除
    [OpenCV-Python] OpenCV-Python 中文教程
    [Robot Framework] Jenkins上调用Rebot命令时执行报错不往下执行其他命令
    如何让程序在开机时自动启动
    @1-5使用pandas保存豆瓣短评数据
    @1-4使用Xpath解析豆瓣短评
    @1-2初识Python爬虫
  • 原文地址:https://www.cnblogs.com/thewaytotheway/p/12847229.html
Copyright © 2011-2022 走看看