如何用OpenCV掃描圖像、查找表和測(cè)量時(shí)間(附鏈接)
如何遍歷圖像的各個(gè)像素? OpenCV的矩陣值是如何存儲(chǔ)的? 如何衡量算法的性能? 什么是查找表,為什么要使用查找表?
測(cè)試案例
首先來考慮一個(gè)簡(jiǎn)單的減色方法。利用C和C ++的無符號(hào)字符(unsigned char)數(shù)據(jù)類型來存儲(chǔ)矩陣項(xiàng),像素的一個(gè)通道可以具備256個(gè)不同的值。對(duì)于一幅三通道的圖像來說,可以構(gòu)造出多種色彩(色彩數(shù)量可達(dá)16,000,000種)。數(shù)量眾多的顏色會(huì)給算法的性能帶來沉重的負(fù)擔(dān)。然而,有些時(shí)候,往往利用較少的色彩數(shù)便能夠獲得同樣的結(jié)果。




如何在內(nèi)存中存儲(chǔ)圖像矩陣?


最為有效的方法


迭代器(安全的)方法
在上述所講的方法中,你要確保傳入正確數(shù)量的uchar數(shù)據(jù)類型值,并跳過行與行之間的間隙,對(duì)于用戶來說,迭代器方法(iterator method)被視為是一種更安全的方式, 因?yàn)樗鼜挠脩裟抢锝庸芰诉@些任務(wù)。利用迭代器方法,只需要找出圖像矩陣的起始行和結(jié)尾行,從起始行開始迭代,直到到達(dá)結(jié)尾行。使用*運(yùn)算符獲取迭代器指向的值(在迭代器前添加該符號(hào))。

利用引用返回值計(jì)算即時(shí)地址

核心功能


性能差異對(duì)比
編譯并運(yùn)行程序以獲得最佳結(jié)果。為使差別更加明晰,我用了一個(gè)相當(dāng)大(2560 X 1600)的彩色圖像。此處介紹的性能適用于彩色圖像. 為了得到更準(zhǔn)確的結(jié)果,我對(duì)上百次函數(shù)調(diào)用的結(jié)果做了平均。


評(píng)論
圖片
表情

