使用Opencv的一些注意事项
這是我網(wǎng)上轉(zhuǎn)載的一篇使用Opencv的注意事項,有共鳴,轉(zhuǎn)載一下!
原文地址
1 看如下代碼:
?CvScalar s = cvScalar(20.0);
由于opencv不是真正的類,因此構(gòu)造函數(shù)和類名不一致,構(gòu)造函數(shù)的首字母是小寫的!!!!!opencv乃是用C寫的,因此盡管含有類的思想,但是不是類,而是結(jié)構(gòu),不是構(gòu)造函數(shù),而是內(nèi)聯(lián)函數(shù)。注意字母的大小寫~
2 如果僅是采用opencv而使用C語言編寫程序,注意變量的定義在C語言中只能在每一個函數(shù)的開頭,不能像C++一樣在函數(shù)的任何位置都可以定義變量~
3 既然C++是基本完全兼容C的,而C++類的特性又十分適合編寫大型的程序,完全可以用C++來編寫程序,只需新建文件的時候文件后綴名改為.CPP即可。
4 在受用opencv的函數(shù)時,一定要注意各個參數(shù)是否一致。本人在使用trackbar時由于window的名差一個字母,半天才調(diào)對啊~
5 opencv中也存在一個很重要的類:cvImage
6學習OpenCV的三種境界:
? (1)乘客級。不會造飛機,會坐飛機也行。將劉、于書中的代碼跑一遍;
? (2)廚師級。吃自助餐。把OpenCV當成菜或佐料,自己烹調(diào);
? (3)天師級。做張?zhí)鞄?#xff0c;這時OpenCV不過是一個披著畫皮的女鬼。
7高斯背景建模,在光線可控并且攝像頭不懂物體動時使用。否則最好不要使用。
8 opencv訪問圖像數(shù)據(jù)的方式
unsigned char * ptr;
for(int i = 0 ;i < img->height;i++){
ptr= (unsigned char*)img->imageData+i*img->widthStep;
for(int j = 0 ; j< img->width; j++){
*(ptr+3*j) -= 20;
*(ptr + 3* j+1) -= 20;
*(ptr + 3*j +2) -= 20;
}
}
?再強大的庫,也不能覆蓋所有的功能,如此對圖像數(shù)據(jù)的訪問就是個關(guān)鍵,程序?qū)懙缴钐幈厝灰约壕帉懰?/span>
法,這時就必須去訪問圖像中的數(shù)據(jù)。opencv中圖像數(shù)據(jù)的訪問主要就是基于指針。由于上述for循環(huán)的使用頻率很高,因此這里重點關(guān)注了一下。
9 原理與庫調(diào)用
??? 雖然調(diào)用庫很方便,但是要想靈活運用opencv的庫,不懂原理是很困難的。最好學會自己去實現(xiàn)一些基本的算法,如此才能靈活運用。
總結(jié)
以上是生活随笔為你收集整理的使用Opencv的一些注意事项的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机html滚动原理,手机滚动-如何实现
- 下一篇: 腐蚀膨胀等形态学处理c代码