? ? ? ? 這是不是一段程序忙迁,而是我的一個夢,是我學(xué)習(xí)該專業(yè)的初衷徙歼。SAO的世界一定存在著犁河,就在哪個夢里鳖枕,找到一個它的入口。也許是沖破云層后的別有洞天桨螺,也許是舊日麥田里的圣克拉拉宾符。只需要有人將這個夢喚醒。
? ? ? ? 本段學(xué)習(xí)內(nèi)容將為手勢識別做基礎(chǔ)灭翔,兩個月后加入《數(shù)字圖像處理》魏烫。第一個項目實踐為SAO? Utils啟動器菜單欄手勢識別。SAO的世界一定存在著肝箱,需要有人將它喚醒哄褒,這是我的初衷和我的夢。
? ? ? ? 學(xué)習(xí)方法采用書中所介紹一周兩章煌张,用六個星期讀到1-12章呐赡,然后開始項目,著手解決具體問題骏融,并閱讀其他教材和相關(guān)論文链嘀。
? ? ? ? OpenCV是一個開源的計算機視覺庫,采用C/C++編寫档玻,可以運行在Windows/Linux/Mac等操作系統(tǒng)上管闷,還提供了Python/Ruby/MATLAB等語言的接口,OpenCV的設(shè)計目標是執(zhí)行速度盡量快窃肠,主要關(guān)注實時應(yīng)用包个。它采用優(yōu)化的C代碼編寫,能夠充分利用多核處理器的優(yōu)勢冤留。
? ? ? ? 在計算機視覺系統(tǒng)中碧囊,計算機接收到的是來自攝像機或磁盤文件的一個數(shù)值矩陣,矩陣中的每個數(shù)值都有很大的噪聲成分(update? until? finish? this? program)
? ? ? ? Windows版本的Opencv只包含release版的庫纤怒,不包含debug版的庫糯而,如果需要,則需要重新編譯debug模式的OpenCV庫泊窘。
第二章? OpenCV入門
1.開始準備
在VS開發(fā)環(huán)境中新建一個項目熄驼,配置好各項設(shè)置,以使OpenCV開發(fā)包中的庫能被正確鏈接烘豹,并保證編譯器的預(yù)處理器能搜索到include目錄下的各個頭文件瓜贾。
2.顯示圖像
OpenCV開發(fā)包提供了讀取各種類型的圖像文件、視頻內(nèi)容以及攝像機輸入的功能携悯。這些功能是OpenCV開發(fā)包中所包含的HighGUI工具集的一部分祭芦。
//從磁盤中加載并在屏幕上顯示一幅圖像的簡單OpenCV程序
#include "highgui.h"
int main( int argc, char** argv )
{
? IplImage* img = cvLoadImage( argv[1] );? ? ? ? ? ? //將圖像文件加載至內(nèi)存
? cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE );
? cvShowImage("Example1", img );
? cvWaitKey(0);
? cvReleaseImage( &img );
? cvDestroyWindow("Example1");
}
以上程序編譯后,可以在命令行模式下通過輸入一個參數(shù)執(zhí)行它憔鬼,執(zhí)行時龟劲,該程序向內(nèi)存加載一幅圖像胃夏,并將該圖像顯示在屏幕上,直至按下鍵盤上的任意一個鍵后才退出窗口關(guān)閉程序昌跌。
cvLoadImage()函數(shù)是一個高層調(diào)用接口仰禀,它通過文件名確定被加載文件的格式;并且該函數(shù)將自動分配圖像數(shù)據(jù)結(jié)構(gòu)所需要的內(nèi)存蚕愤。cvLoadImage()可讀絕大多數(shù)格式類型的圖像文件答恶,該函數(shù)執(zhí)行完后返回一個指針,此指針指向一塊為描述該圖像文件的數(shù)據(jù)結(jié)構(gòu)(IplImage)而分配的內(nèi)存塊审胸。IplImage結(jié)構(gòu)體將是使用OpenCV時最常用的數(shù)據(jù)結(jié)構(gòu)亥宿,可處理單通道,多通道砂沛,整型的烫扼,浮點型的等所有類型的圖像文件