1. 程式人生 > >OpenCV學習筆記(三十七)——實用函式、系統函式、巨集core

OpenCV學習筆記(三十七)——實用函式、系統函式、巨集core

如果你想在OpenCV的基礎上自己開發一些演算法,我覺得core這部分內容不得不精啊,能熟練使用OpenCV的資料結構是開發的基礎,又是重中之重。最近就又拌在這上頭了,所以再重溫一下。這次分析一下Utility and System Functions and Macros這部分,就是實用函式、系統函式和巨集。

OpenCV在這部分裡包含一些類似標準c++、c裡面的一些東西。

系統函式有很多。有些是記憶體方面的操作,類似new delete之類的操作,很多都是為了防止記憶體溢位的函式有alignPtr、alignSize、allocate、deallocate、fastMalloc、fastFree

。格式輸出的函式啦format(是不是太熟悉了)。還有一些和系統相關的東西checkHardwareSupport、getNumThreads、getThreadNum、getTickCount、getTickFrequency、getCPUTickCount、setNumThreads。還有一些比較有意思的東西,比如功能類似#ifdef #endf這樣的開關,也有函式setUseOptimized實現 ,相關的還有useOptimized函式。還有一個不懂的函式saturate_cast(求指點)等待各位補充。

實用函式很接近<math.h>裡的一些函式,很有意思,可以方便大家開發,有計算向量角度的函式fastAtan2

、計算立方根的函式cubeRoot、向上取整函式cvCeil、向下取整函式cvFloor、四捨五入函式cvRound。注意cvCeil、cvFloor、cvRound和大家常用的ceil、floor、round函式略有不同,標準庫函式返回值並不是int型的變數,必要時需強制轉換,而OpenCV裡面的取整函式返回值為int型。還有一些類似matlab裡面的函式,比如cvIsInf判斷自變數是否無窮大,cvIsNaN判斷自變數是否Not a Number。

巨集也很多,這些巨集在標準c++、c裡也有出現,CV_Assert是個斷言,不知道和assert()有什麼區別。error也是一種異常,還有Exception

類這個異常類。

有了這些東西,開發起來有沒有更順手一些呢~~隨著使用的深入,我會再補充一些上訴東西的使用心得