OpenCV-------常用函数

版权声明:希望我的博客可以为别人带去知识与便利,让那些像我曾经一样迷茫的小伙伴不再迷茫~ https://blog.csdn.net/qq_34374664/article/details/82391167

AutoBuffer

  自动分配的缓冲区类,该类为函数和方法分配临时缓冲区。如果一个临时的缓冲区通常是小(几K的内存),但其大小取决于参数,在堆中创建一个小的固定大小的数组是有意义的。
  在opencv的core.hpp里面有AutoBuffer<>()函数,该函数为自动分配一段指定大小的内存,并且可以指定内存中数据的类型。

cv::AutoBuffer<float, 1000> buf; // 创建一个包含1000 float自动缓冲区
cv::AutoBuffer<float> dbuf(1000);// 创建一个包含1000 float自动缓冲区

cvSeq

https://blog.csdn.net/wqvbjhc/article/details/5497017

icvHoughSortDescent32s()

void icvHoughSortDescent32s(int *sequence , int sum , int*data),参数解释:

第三个参数:数组的首地址

第二个参数:要排序的数据总数目

第一个参数:此数组存放data中要参与排序的数据的序号

举个例子,我们有一个大数组data[],有1000个int型数据,在实际应用中有sum=100个我们要取出来并进行排序,到底是哪100个数呢,我们把这些数据在data[]中的序号存放在sequence[]数组中,即这100个数为data[sequence[0]]~ data[sequence[99]],这样我们调用函数的形式为:

icvHoughSortDescent32s(sequence , sum , data) ;

结果,本函数按照这100个数的大小进行降序排列,并将降序排列后的数据对应的在data[]中的序号赋给sequence[]数组,这样,这100个数的降序排列为data[sequence[0]]~ data[sequence[99]],注意这里sequence[]数组中数据已经进行了重新排序。而且这个排序算法改变的只是sequence[]数组中的元素,源数据data[]未发生丝毫改变。

cvRNG()

cvGetTickCount()
返回64位长整数的时间数据,在OpenCV是为CvRNG设置的专用种子。

cvGetTickFrequency()
返回系统时钟频率

cvRNG()
跟一般的C语言srand()使用方法一样,要先给它一个种子,但srand()用到的是unsigned int的32位种子范围,而cvRNG()用的是64位长整数种子。初始化CvRNG资料结构,假如seed给0,它将会自动转成-1。
cvRNG(64位种子)

cvRandInt()
返回均匀分布32位的随机数,均匀分布为统计学上的专有名词,表示长时间下所有数字出现的概率都是一样的,而cvRandint()在opencv里使用的公式:
temp = (uint64)(unsigned)temp*1554115554 + (temp >> 32);
这个公式的名称叫Multiply-with-carry (MWC) generator,有兴趣的话可以在网络上找“随机数产生器”,Multiply-with-carry是将64位的种子去产生32位的随机数。
unsigned cvRandInt(CvRNG资料结构)

cvRandReal()
返回均匀分布,0~1之间的随机小数,cvRandReal()的公式则是用
cvRandInt(rng)*2.3283064365386962890625e-10
的方法,其实就是cvRandInt(rng)*2^(-32),也就是将cvRandInt()随机出来的结果(32位除以2的三十二次方,因此,出现的结果将会是0~1之间的小数,也就是随机0~1之间。
double cvRandReal(CvRNG资料结构)

阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页