日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

某人寫的openCV學習筆記

 quasiceo 2016-01-18

某人寫的openCV學習筆記

(2013-07-23 23:24:22)
標簽:

it

分類: 圖形圖像
 

http://blog.csdn.net/thefutureisour 

我的OpenCV學習筆記(25):c++版本的高斯混合模型的源代碼完全注釋
之前看到過C版本的,感覺寫的很長,沒有仔細看,但是C++版本的寫的還是很不錯的。我仔細看了一下,并對內(nèi)容進行了仔細的注釋,如果有人沒有看懂,歡迎留言討論。 先看一眼頭文件,在background_segm.hpp中 class CV_EXPORTS_W BackgroundSubtractorMOG : public BackgroundSubtractor { public: /...
2013-01-08 14:46 閱讀(1583) 評論(5)
最近在寫自己的算法,其實就是對一些傳統(tǒng)算法的改進。傳統(tǒng)算法可以參考opecv的源代碼。在閱讀源代碼的過程中,我慢慢領(lǐng)會到了opencv的強大之處,并不是因為它實現(xiàn)了各種算法,而是在于它對于基本數(shù)據(jù)結(jié)構(gòu)的設計,是得其他人可以很方便的使用這些數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)自己的算法。在幫助手冊中,已經(jīng)對于這些數(shù)據(jù)結(jié)構(gòu)有比較詳細的描述了。今天我就為英語不好的孩子們服務一下,簡單的介紹一下它們。 首先介紹2維點...
2012-12-31 15:18 閱讀(638) 評論(1)
看上去這是一個比較簡單的問題,在2.0以上的版本中,使用Mat類來儲存一幅圖像。但是具體的說,Mat類中,又是如何儲存的呢? 在opencv自帶的幫助手冊上有這么一段話: 通過這兩個式子,我們可以略知一二:首先,Mat不僅可以存圖像,也可以用來存放其他高維的數(shù)據(jù)。數(shù)據(jù)存在data指針所指向的地址中的,對于高維數(shù)據(jù)(dim維),每個數(shù)據(jù)的地址是用上面式子算的;它的一個特例是2維數(shù)...
2012-12-21 12:57 閱讀(657) 評論(0)
其實按理說這并不是一件困難的工作,但是由于種種原因,在OpenCV中讀取的黑白圖像并不是我們想像的只有一個通道,而是3通道的。但是當我們使用Mat image = imread("D:/picture/images/baboon2.jpg",0);之后,不論是彩色圖像還是黑白圖像都會轉(zhuǎn)換為單通道。明白了這個之后,我們的程序就簡單了: #include #include #include u...
2012-05-29 16:58 閱讀(860) 評論(9)
我之前的OpenCV的學習,都是C++的,主要的參數(shù)資料是用戶手冊和一本書《OpenCV 2 Computer Vision Application Programming Cookbook》(網(wǎng)上可以下載到,但是沒有中文版),這本書的前七章的主要內(nèi)容我基本都放到了博客上。(后面的內(nèi)容有時間在與大家繼續(xù)分享。)這本書最大的特點是通俗易懂—因為它是一本“Cookbook”。對很多理論性的內(nèi)容,都是淺...
2012-05-29 11:31 閱讀(499) 評論(0)
先看提取輪廓的代碼: Mat image = imread("D:/picture/images/binaryGroup.bmp",0); if(!image.data) return -1; imshow("源圖像",image); //獲取輪廓 std::vector> contours; //獲取輪廓: findContours(image, //圖...
2012-05-25 17:28 閱讀(2808) 評論(9)
檢測輪廓時我們使用canny邊沿檢測算法,這個算法其實也是基于梯度的。但是,與傳統(tǒng)的梯度算法求邊沿不同的是: 1.它可以精確的定位邊沿的位置。通過沿幅角方向檢測模值的極大值點,即邊緣點,遍歷8個方向圖像像素,把每個像素偏導值與相鄰像素的模值比較,取其MAX值為邊緣點,置像素灰度值為0。這樣做的結(jié)果使得邊沿非常細。 2.雙閾值檢測。通常一個較小的閾值會保留很多邊沿,他們中的一部分是沒有用的;而一...
2012-05-25 09:01 閱讀(5095) 評論(2)
Sobel變換和拉普拉斯變換都是高通濾波器。什么是高通濾波器呢?就是保留圖像的高頻分量(變化劇烈的部分),抑制圖像的低頻分量(變化緩慢的部分)。而圖像變化劇烈的部分,往往反應的就是圖像的邊沿信息了。 在OpenCV中,調(diào)用sobel函數(shù)很簡單: Mat image = imread("D:/picture/images/boldt.jpg",0); if(!image.data) re...
2012-05-17 09:56 閱讀(1300) 評論(0)
首先如何理解對灰度圖像進行形態(tài)學操作? 一種比較形象的方法是將灰度圖像看做是“等高線”:亮的區(qū)域代表山峰,而暗的區(qū)域代表山谷,圖像的邊沿就對應于峭壁。如果腐蝕一幅圖像,會導致山谷被擴展,而峭壁減少了。相反的,如果膨脹一幅圖像,峭壁則會增加。但是這兩種情況下,中間的部分(大片的谷底和高原)基本保持不變。 在上述理解的基礎上,如果我們對圖像的腐蝕和膨脹的結(jié)果做差,就能提取圖像的邊界:因為邊界區(qū)域,...
2012-05-17 09:06 閱讀(705) 評論(0)
這次主要介紹兩方面的內(nèi)容,一部分是形態(tài)學操作,另一部分是工具條。 先說形態(tài)學操作。這里只介紹4種簡單的:腐蝕、膨脹、開、閉。最基本的形態(tài)學操作是腐蝕和膨脹。其他的操作可以通過腐蝕和膨脹推導出來。 用集合論的觀點介紹他們非常麻煩。這里換一種思路:我們先做一定的假設:對于一幅圖像:前景(我們感興趣的部分)是白色的;背景(不感興趣的部分)是黑色的。然后就可以望文生義一下了:腐蝕操作會使得前景變小,而...
2012-05-14 22:26 閱讀(1680) 評論(2)
什么是反向投影直方圖呢?簡單的說在灰度圖像的每個點(x,y),用它對應的直方圖的bin的值(就是有多少像素落在bin內(nèi))來代替它。所以·如果這個bin的值比較大,那么反向投影顯示的結(jié)果會比較亮,否則就比較暗。 從統(tǒng)計學的角度,反輸出圖像象素點的值是觀測數(shù)組在某個分布(直方圖)下的的概率。 所以加入我們已經(jīng)得到了一個物體的直方圖,我們可以計算它在另一幅圖像中的反向投影,來判斷這幅圖像中是否有該物...
2012-05-10 18:30 閱讀(1113) 評論(4)
我們知道,直方圖可以在一定程度上反應圖像的一些統(tǒng)計信息。所以,可以考慮用直方圖對比的方法,進行基于內(nèi)容的圖像檢索。 通常我們搜索圖片,都是根據(jù)圖片的標簽搜索的?;趦?nèi)容的搜索,就是假設我們不知道標簽,而是直接輸入一幅圖像,然后從得出一些跟這幅圖像的直方圖比較相似的圖像。 那么我們不禁要問,如何度量兩幅直方圖的相似程度呢? OpenCV的compareHist函數(shù)提供了一個參數(shù)供你選擇。最簡單...
2012-05-10 16:18 閱讀(1164) 評論(0)
一些頭文件: #include #include #include #include using namespace std; using namespace cv;   首先建立一個類: class Histogram1D { private: //直方圖的點數(shù) int histSize[1]; //直方圖的范圍 float hranges[2]; //指向該...
2012-05-03 20:53 閱讀(880) 評論(1)
這次通過一個讀取視頻的綜合例子來介紹VideoCapture類的一些基本操作: #include #include #include #include using namespace std; using namespace cv; int main() { //打開視頻文件:其實就是建立一個VideoCapture結(jié)構(gòu) VideoCapture capture("D:/vide...
2012-05-03 09:51 閱讀(4973) 評論(16)
在網(wǎng)上看了許多關(guān)于OpenCV啟動攝像頭的資料,但是,都是基于C語言的,代碼又臭又長,(其實主要是因為我學的OpenCV就是用C++的,C語言的基本數(shù)據(jù)結(jié)構(gòu)不太熟悉),所以一直想找一個用C++寫的程序,最后讓我在OpenCV自帶的英文參考手冊上找見了,整個代碼30行都不到!nice??!我對代碼做了一點修改,發(fā)上來吧! #include #include #include using na...
2012-05-03 09:16 閱讀(1559) 評論(4)
銳化的作用是加強圖像的邊沿和輪廓,通常也成為高通濾波器: 模板一般設計為中心處的值為正,外圍的值為負(總系數(shù)之和為0): int main() { //源圖像 Mat scr = imread("D:/picture/img.tif"); Mat rst; imshow("原圖像",scr); Mat kernel(3,3,CV_32F,Scalar(-1)); // 分配像素...
2012-05-01 13:03 閱讀(1715) 評論(3)
中值濾波就是將當前像素值替換為模板覆蓋范圍內(nèi)的所有像素值中大小居中那一個:對于一個3*3的模板,第5大的就是中值: (10,15,20,20,20,20,20,25,100) 中值濾波使得那些更亮(或者更暗)的點更像他周圍的值。所以它在濾除噪音的同時,可以較好地保留細節(jié)輪廓。 為了驗證上述結(jié)論,我先給一幅圖像加入椒鹽噪聲,然后用分別用中值濾波、均值濾波處理圖像,進行對比: #include...
2012-04-30 16:06 閱讀(1127) 評論(6)
空域濾波按照對像素的操作方法,可以分為兩類:線性濾波(低通、高通、帶通)和非線性濾波(最大值、最小值、中值) 按照圖像處理的效果,可以分為平滑濾波和銳化濾波。 “線性濾波”這個概念其實是從信號與系統(tǒng)里面借用過來的。輸入信號通過一個線性系統(tǒng)時,輸出的結(jié)果是輸入信號與系統(tǒng)時域沖擊響應的卷積。而在圖像處理中,則使用模板對像素(及其周圍像素)進行線型加權(quán)運算,權(quán)值取決于模板的像素值。運算方法與卷積類似...
2012-04-30 15:45 閱讀(1060) 評論(0)
OpenCV提供了一些基本的繪圖操作,比如畫圓,畫橢圓,畫線,畫矩形,在圖像里插入文字等功能。 畫圓使用的是circle函數(shù),必須提供的參數(shù)是:畫在出的圓顯示在哪里,圓心,半徑,以及畫線的顏色。 //圓心 Point center = Point(255,255); //半徑 int r = 100; //承載圖像 Mat picture(500,500,CV_8UC3,Scala...
2012-04-30 14:08 閱讀(2154) 評論(0)
SVM是2000年左右提出的一種新的分類方法,著重解決了小樣本分類問題。具體原理可以參看模式識別的書籍。OpenCV中的SVM的實現(xiàn)也是基于大名鼎鼎的SVM 庫:http://www.csie./~cjlin。OpenCV教程中有兩個例子,一個是線性可分的,一個是線性不可分的,我對他們做了詳盡的注釋: 先看線性可分時: #include #include #includ...
2012-04-23 22:19 閱讀(1152) 評論(0)

我的OpenCV學習筆記(五):給圖像加上邊框

這段程序來自OpenCV教程,使用copyMakeBorder函數(shù)來給圖像加上邊框: #include #include #include #include using namespace std; using namespace cv; int main() { Mat image,result; //獲得邊界的類型 int borderT...
2012-04-22 23:33 閱讀(836) 評論(0)
當兩幅圖像尺寸相同時,給圖像加上水印效果其實很簡單,就是簡單的將一幅圖像加到另一幅圖像上(兩幅圖像乘以一定的系數(shù)就可以控制相加的效果): #include #include using namespace cv; int main() { Mat image1 = imread("D:/picture/images/boldt.jpg"); Mat image2 = imre...
2012-04-22 22:59 閱讀(759) 評論(0)
在第二講中,我介紹了如何操作每個像素,這次利用操作像素完成簡單的圖像處理操作。 首先從給圖像加入椒鹽噪聲開始,椒鹽噪聲其實就是使圖像的一些隨機的像素為黑色(255)或者白色(0): #include #include using namespace cv; void salt(Mat& image, int n) { for(int k=0; k
2012-04-22 11:18 閱讀(2579) 評論(5)
首先推薦一本書:《OpenCV 2 Computer Vision Application Programming Cookbook》網(wǎng)上可以下載到這本書的英文版,貌似沒有翻譯的。這本書的特點是里面的程序不是那種為了演示函數(shù)功能而寫的面向過程的小程序,而是用面向?qū)ο蟮乃悸穼懙拇蟪绦?,不過他是一步一步教你寫出來的,也不要有太大壓力。 任何圖像處理算法,都是從操作每個像素開始的。即使你不會使用Ope...
2012-04-21 23:30 閱讀(857) 評論(1)
OpenCV是一個很不錯的開源計算機視覺庫。我自己已經(jīng)玩了一段時間了,決定把一些學習成果整理出來,分享給大家。學習OpenCV最好的助手當然是opencv自帶的手冊和教程了。手冊是英文版的,方便查找函數(shù)。教程有部分是中文版的,也有一部分沒有漢化??梢酝ㄟ^網(wǎng)址:http://www./opencvdoc/2.3.2/html/index.html查看。 這次主要是想說一個...
2012-04-18 09:48 閱讀(788) 評論(0)

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多