教程:計(jì)算機(jī)視覺(jué)庫(kù)OpenCV初體驗(yàn)筆記(一);

皆さんこんいちは!這是我窩關(guān)于OpenCV(C++版本)零基礎(chǔ)入門(mén)筆記的草稿!本系列文章主要通過(guò)每次一個(gè)小案例從而由淺至深地帶你入門(mén),后期的進(jìn)階文章將跟隨DIP和CV的wiki結(jié)合公式及具體原理詳細(xì)聊一聊OpenCV這個(gè)項(xiàng)目。本次文章主要內(nèi)容為簡(jiǎn)單概述OpenCV和結(jié)構(gòu)與顯示圖片的范例。

OpenCV概述:

OpenCV是一個(gè)由Intel公司于1999年發(fā)起的基于C和C++的開(kāi)源跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù)項(xiàng)目。項(xiàng)目的目標(biāo)是提供易于使用的計(jì)算機(jī)視覺(jué)接口,從而幫助人們快速建立精巧的視覺(jué)應(yīng)用。它基于BSD的許可。

OpenCV最初是因?yàn)镮ntel想要增強(qiáng)CPU集群性能的研究并為計(jì)算機(jī)視覺(jué)提供通用接口,從而還可以間接促使用戶們購(gòu)買更快地處理器,對(duì)計(jì)算機(jī)視覺(jué)科學(xué)的發(fā)展和企業(yè)自身利益中都有著很大的益處,可謂是一箭雙雕(x)。

OpenCV庫(kù)目前包含從計(jì)算機(jī)視覺(jué)各個(gè)領(lǐng)域衍生出來(lái)的數(shù)百個(gè)函數(shù)。大到工業(yè)的產(chǎn)品質(zhì)量檢驗(yàn),醫(yī)療(x光片ct..)小到樓宇監(jiān)控,相機(jī)校正,人臉識(shí)別..如今你已經(jīng)可以在幾乎任何地方看到OpenCV的身影。目前已有成千上萬(wàn)的用戶以及企業(yè)已投身到OpenCV的開(kāi)發(fā)與應(yīng)用當(dāng)中。

OpenCV的結(jié)構(gòu):

OpenCV是由層級(jí)結(jié)構(gòu)組織的。

First:OpenCV和操作系統(tǒng)的交互。 硬件加速層HAL:SSE,NENO,IPP,OpenGL,CUDA,.. Second:語(yǔ)言綁定和示例程序。 core,imgproc,objdetect,.. Third:opencv_contrib模塊包含的由其他人所貢獻(xiàn)的代碼。 face,text,rgbd,.. Fourth:各種語(yǔ)言的接口以及一些范例。 Bindings,Samples..

OpenCV的頭文件們(opencv.hpp):

"opencv2/core/core_c.h" 舊式C風(fēng)格的結(jié)構(gòu)以及運(yùn)算。 "opencv2/core/core.hpp" 新式C++風(fēng)格的結(jié)構(gòu)以及數(shù)字運(yùn)算。 "opencv2/flann/minflann.hpp" 最鄰近搜索匹配函數(shù)。 "opencv2/imgproc/imgproc_c.h" 舊式C風(fēng)格的圖像處理函數(shù)。 "opencv2/imgproc/imgproc.hpp" 新式C++風(fēng)格圖像處理函數(shù)。 "opencv2/video/photo.hpp" 操作和恢復(fù)照片的相關(guān)算法。 "opencv2/video/video.hpp" 視覺(jué)追蹤以及背景分割。 "opencv2/features2d/features2d.hpp" 用于追蹤二維特征。 "opencv2/objdetect/objdetect.hpp" 級(jí)聯(lián)人臉?lè)治銎?latentSVM分類器,HoG特征和平面檢測(cè)器。 "opencv2/calib3d/calib3d.hpp" 校準(zhǔn)以及雙目視覺(jué)相關(guān)。 "opencv2/ml/ml.hpp" 機(jī)器學(xué)習(xí),聚類以及模式識(shí)別相關(guān)。 "opencv2/highgui/highgui_c.h" 舊式C風(fēng)格顯示,滑動(dòng)條,鼠標(biāo)操作以及輸入輸出相關(guān)。 "opencv2/highgui/highgui.hpp" 新式C++風(fēng)格的顯示,滑動(dòng)條,鼠標(biāo)操作以及輸入輸出相關(guān)。 "opencv2/contrib/contrib.hpp" 用戶貢獻(xiàn)的代碼,皮膚檢測(cè),模糊Mean-Shift追蹤,spin image算法及自相似特征等。

通過(guò)OpenCV庫(kù)顯示圖片:

#include "opencv2/opencv.hpp" using namespace cv; int main(int argc, char** argv){ Mat img = imread(argv[1],-1); if(img.empty()) return -1; namedWindow("DisplayPic",cv::WINDOW_AUTOSIZE); imshow("DisplayPic",img); waitKey(0); destoryWindow("DisPlayPic"); return 0; }

部分代碼解析:

Mat img = imread(argv[1],-1);

自動(dòng)為圖像分配內(nèi)存空間并寫(xiě)入圖像到內(nèi)存,初始化。

if(img.empty()) return -1;

如果圖像為空,則返回錯(cuò)誤信息到函數(shù)。

namedWindow("DisplayPic",cv::WINDOW_AUTOSIZE);

通過(guò)HighGUI函數(shù)將窗口的名稱及大小賦予給窗口。

imshow("DisplayPic",img);

顯示圖像:創(chuàng)建窗口讀入窗口配置并繪制圖像。

waitKey(0);

暫停并通過(guò)時(shí)間等待鍵盤(pán)事件。大于零則等待時(shí)間為毫秒,小于等于零則無(wú)限等待。

destoryWindow("DisPlayPic");

銷毀窗口并釋放相關(guān)內(nèi)存。

擴(kuò)展閱讀:

OpenCV官網(wǎng)

OpenCV官方文檔;

OpenCV官方快速指南;

OpenCV官方Wiki;

OpenCV速查表;

OpenCV圖像處理中常用函數(shù)匯總;

VS2015配置OpenCV開(kāi)發(fā)環(huán)境;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容