Opencv、OpenCV2.x、Opencv3.x个版本的进化,与VS各个版本的匹配问题
首相聲明,本文章借鑒了其他文章,會(huì)給與文章鏈接。
1.opencv 與opencv2.x版本
Opencv1.0版本于2006年面世,主要基于C語(yǔ)言。2009年發(fā)布o(jì)pencv2,主要基于C++。此時(shí)OpenCV庫(kù)被劃分成多個(gè)模塊,這些模塊被編譯成庫(kù)文件后,位于lib文件夾中。主要有以下模塊(版本1的結(jié)構(gòu)見(jiàn)我的這篇blog:http://blog.csdn.net/lu597203933/article/details/13614377):
Opencv_core模塊:包含核心功能,尤其是底層數(shù)據(jù)結(jié)構(gòu)和算法函數(shù)。
Opencv_improc模塊:包含圖像處理函數(shù)。
Opencv_highgui模塊:包含讀寫(xiě)圖像及視頻的函數(shù),以及操作圖形用戶(hù)界面函數(shù)。
Opencv_features2d模塊:包含興趣點(diǎn)檢測(cè)子,描述子以及興趣點(diǎn)匹配框架。
Opencv_calib3d模塊:包含相機(jī)標(biāo)定,雙目幾何估計(jì)以及立體視覺(jué)函數(shù)。
Opencv_video模塊:包含運(yùn)動(dòng)估算,特征跟蹤以及前景提取函數(shù)與類(lèi)。
Opencv_objdetect模塊:包括物體檢測(cè)函數(shù),如臉部和行人檢測(cè)。
庫(kù)中還包含其它的工具模塊,如機(jī)器學(xué)習(xí)(opencv_ml),計(jì)算幾何(opencv_flann),第三方代碼(opencv_contrib)等。這些模塊都對(duì)有一個(gè)單獨(dú)的頭文件(位于include文件夾)。推薦的聲明方式如下:
#include<opencv2\core\core.hpp>
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\imgproc\imgproc.hpp>
而#include "cv.h"這是舊的代碼方式,那是庫(kù)還沒(méi)有被劃分為模塊。
文章鏈接:https://blog.csdn.net/scutjy2015/article/details/72881361
2.opencv2.x與opencv3.x
Opencv2標(biāo)志著opencv革命性的改變,Opencv2帶來(lái)了全新的C++接口,將Opencv的能力無(wú)限放大。在2.0時(shí)代,opencv增加了新的平臺(tái)支持,包括iOS和Android,通過(guò)CUDA和openGL實(shí)現(xiàn)了GPU加速,為Python和Java用戶(hù)提供了接口。
Opencv 3改變了項(xiàng)目架構(gòu)的方式,3.0版本不會(huì)像2.0版本一樣激進(jìn)的嘗試,只會(huì)有足夠穩(wěn)定的改進(jìn)。項(xiàng)目架構(gòu)的改變是Opencv 3最為重大的革新之處。2.0版本是各個(gè)模塊都是以整體的形式構(gòu)建然后組合在一起的。然而,隨著功能的增加,opencv主體集成了各種各樣的功能模塊,變得越來(lái)越臃腫。而3.0版本就是為了給日益發(fā)福的opencv減肥,因?yàn)镺pencv3決定向其他大項(xiàng)目一樣,拋棄整體架構(gòu),使用內(nèi)核+插件的架構(gòu)形式。
在GitHub中,除了存放著正式版本的opencv的主倉(cāng)庫(kù)和新增加的“opencv_extra”倉(cāng)庫(kù)以外,opencv3中還添加了一個(gè)名為“opencv_contrib”的全新倉(cāng)庫(kù),該倉(cāng)庫(kù)包括很多讓人興奮的功能:臉部識(shí)別,文本探測(cè),文本識(shí)別,新的邊緣檢測(cè)器,充滿(mǎn)藝術(shù)感的圖像修復(fù),深度地圖處理,新的光流和追蹤算法等。
opencv_contrib倉(cāng)庫(kù)是大多數(shù)實(shí)驗(yàn)性代碼放置的地方,一些API可能會(huì)有改變,這些額外模塊可以在CMake中用OPENCV_EXTRA_MODULES_PATH=/modules傳遞給CMake文件。
opencv2項(xiàng)目移植到opencv3需要注意的一些細(xì)節(jié)。由于opencv3的主體部分只是在opencv2的基礎(chǔ)上進(jìn)行小幅度的更改,所以opencv2的大部分程序都可以在opencv3上運(yùn)行。但有些也會(huì)報(bào)錯(cuò)。
1【由于宏名稱(chēng)的變更造成的“未聲明的標(biāo)識(shí)符”系列問(wèn)題】
有時(shí)候,遇到此類(lèi)問(wèn)題加入一句“#include<cv.h>”便可以解決。有時(shí)會(huì)出現(xiàn)“CV_”式的宏前綴命名規(guī)范的錯(cuò)誤,因?yàn)樵趏pencv3對(duì)這些前綴為“CV_”的宏使用了新的命名規(guī)范。遇到該類(lèi)問(wèn)題主要有如下解決方法:1直接去掉"CV_"前綴;2需要新的前綴,例如CV_AA改為L(zhǎng)INE_AA;3需要在新的命名中使用宏,例如TermCriteria函數(shù)中,CV_TERMCRIT_EPS改為T(mén)ermCriteria::EPS
2【使用vector容器之時(shí)提示"error C2065:"vector":未聲明的標(biāo)識(shí)符】
在opencv3的環(huán)境下未包含STD命名空間,需要在開(kāi)頭加上一句"using namespace std;"就解決了。
3【其他一些細(xì)節(jié)問(wèn)題】
features2d.hpp頭文件路徑更改。將#include<opencv2/nonfree/features2d.hpp>改為#include<opencv2/features2d.hpp>
core.hpp頭文件路徑更改。將#include <opencv2/core/core.hpp>改為#include<opencv2/core.hpp>
表示顏色時(shí),將CV_RGB改為Scaler
定義尺寸時(shí),將cvSize(-1,-1)改為Size(-1,-1)
用format進(jìn)行格式化輸出時(shí),將format(r,"python")改為format(r,Formatter::FMT_PYTHON)
原文轉(zhuǎn)載地址:https://blog.csdn.net/yangxueyangxue/article/details/80776255。
3.VS各個(gè)版本與opencv版本匹配問(wèn)題
關(guān)于opencv,我們從opencv2.x開(kāi)始說(shuō)明,因?yàn)橐淮姹臼褂梅秶邢?#xff0c;網(wǎng)上基本上都是2.0以上的版本、
VC6.0? vs2005 vs2008其實(shí)都需要經(jīng)過(guò)cmake這一個(gè)步驟,將opencv編譯之后找到相應(yīng)的庫(kù)文件,有如下關(guān)系:
opencv 2.3 == vc9
opencv 2.4.10 == vc10、vc11、vc12
opencv 2.4.13 == vc11、vc12
opencv 3.4.0 == vc14、vc15
opencv 3.4.1 == vc14、vc15
關(guān)于vs版本對(duì)應(yīng)問(wèn)題可以參考文章:https://blog.csdn.net/ljsant/article/details/75221118。
對(duì)應(yīng)版本說(shuō)明。在該文件夾下不需要Cmake編譯,直接從里面就可以添加相應(yīng)的庫(kù)文件,頭已經(jīng)可編譯的文件,如果opencv版本下沒(méi)有對(duì)應(yīng)的VC版本則需要通過(guò)如下方法(以vs2005來(lái)舉例):
可以參考文章:https://blog.csdn.net/blckriver/article/details/81348116。
1、Visual Studio 2005
2、OpenCV-2.4.7
3、cmake-3.4.1-win32-x86 (一般情況下Cmake工具版本要比opencv版本高,理論上可以編譯各種版本的opencv? 根據(jù)項(xiàng)目實(shí)際需要來(lái)配置。CMake是一個(gè)跨平臺(tái)的安裝(編譯)工具,可以用簡(jiǎn)單的語(yǔ)句來(lái)描述所有平臺(tái)的安裝(編譯過(guò)程)。他能夠輸出各種各樣的makefile或者project文件,能測(cè)試編譯器所支持的C++特性,類(lèi)似UNIX下的automake。只是 CMake 的組態(tài)檔取名為 CMakeLists.txt。Cmake 并不直接建構(gòu)出最終的軟件,而是產(chǎn)生標(biāo)準(zhǔn)的建構(gòu)檔(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建構(gòu)方式使用。這使得熟悉某個(gè)集成開(kāi)發(fā)環(huán)境(IDE)的開(kāi)發(fā)者可以用標(biāo)準(zhǔn)的方式建構(gòu)他的軟件,這種可以使用各平臺(tái)的原生建構(gòu)系統(tǒng)的能力是 CMake 和 SCons 等其他類(lèi)似系統(tǒng)的區(qū)別之處。(參考https://baike.baidu.com/item/cmake/7138032?fr=aladdin))。
Cmake官網(wǎng)地址:https://cmake.org/download/。各種版本都有。
--------------------- ?
作者:瘋狂的挖掘機(jī) ?
來(lái)源:CSDN ?
原文:https://blog.csdn.net/ljsant/article/details/88421242 ?
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的Opencv、OpenCV2.x、Opencv3.x个版本的进化,与VS各个版本的匹配问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 深度学习框架对比
- 下一篇: cvNamedWindow与namedW