(三)Visual Studio Code中設(shè)置OpenCV(MinGW-w64)

Visual Studio Code中設(shè)置OpenCV(MinGW-w64)

上一篇blog講的如何使用g++編譯CV源碼智亮,這篇blog將使用Visual Studio Code作為開(kāi)發(fā)工具漓帅。

有請(qǐng)我們的主角Mircosoft Visual Studio Code ————輕量跨平臺(tái)開(kāi)源源碼編輯器上忍。

portal:https://code.visualstudio.com/
直接點(diǎn)擊Download for Windows备籽,下載完成后打開(kāi).exe下一步下一步安裝即可长捧。
打開(kāi)vscode(visual studio code的簡(jiǎn)寫(xiě))领跛,發(fā)現(xiàn)是英文版核蘸,沒(méi)事的谒拴,vscode的強(qiáng)大之處在于它支持各種各樣的插件尝江,而它的功能是通過(guò)各種插件發(fā)揮的。

vscode主界面

點(diǎn)擊紅色圈內(nèi)的插件處英上,會(huì)打開(kāi)插件界面炭序,在搜索欄輸入Chinese,會(huì)出現(xiàn)Chinese (Simplified) Language Pack for Visual Studio Code,點(diǎn)擊Install安裝苍日,完成安裝后重啟vscode惭聂,界面就會(huì)變成中文。

插件安裝

這里是因?yàn)椴┲饕呀?jīng)安裝過(guò)了相恃,所以沒(méi)有顯示安裝辜纲。如果重啟后還是英文,請(qǐng)按下Ctrl+Shift+P組合鍵拦耐,在打開(kāi)的選項(xiàng)卡中輸入language,會(huì)出現(xiàn)Configure Display Language,點(diǎn)擊后選擇zh-cn,它會(huì)提示是否重啟耕腾,選擇Restart Now。重啟過(guò)后即為中文杀糯。

vscode的強(qiáng)大之處在于它的拓展插件扫俺,所以打開(kāi)拓展界面,再裝上一些常用的拓展插件固翰。

  • 在搜索欄輸入C/C++,選擇C/C++狼纬、C++ Intellisense安裝羹呵。
  • 搜索欄輸入cmake,選擇CMake Tools畸颅、CMake安裝担巩。這個(gè)是用于之后寫(xiě)比較大一點(diǎn)的工程用得上。

編譯方式一没炒,編寫(xiě).json文件:

  • 在啟動(dòng)界面點(diǎn)擊打開(kāi)文件夾涛癌,將目錄選擇至main.cpp所在的目錄。打開(kāi)main.cpp,點(diǎn)擊調(diào)試,選擇啟動(dòng)調(diào)試,在選擇環(huán)境這兒選擇C++(GDB/LLDB)送火,選擇g++項(xiàng)拳话,會(huì)出現(xiàn)launch.json配置文檔界面。復(fù)制如下內(nèi)容替換原來(lái)launch.json的內(nèi)容种吸。部分要修改的地方請(qǐng)根據(jù)自己的情況修改弃衍。

launch.json

{
    // 使用 IntelliSense 了解相關(guān)屬性。 
    // 懸停以查看現(xiàn)有屬性的描述坚俗。
    // 欲了解更多信息镜盯,請(qǐng)?jiān)L問(wèn): https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "build",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "這里填gdb.exe的目錄,目錄填完后還要加上gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build"
        }
    ]
}
  • 按下Ctrl+Shift+P組合鍵猖败,在彈出選項(xiàng)卡中輸入tasks速缆,選擇 任務(wù):配置默認(rèn)生成任務(wù)(Tasks:Configure Default Build Task),會(huì)進(jìn)入tasks.json的配置文檔界面恩闻,同樣復(fù)制如下內(nèi)容替換掉原來(lái)tasks.json內(nèi)容艺糜。部分地方請(qǐng)根據(jù)自己的目錄修改。

tasks.json

{
// 有關(guān) tasks.json 格式的文檔幢尚,請(qǐng)參見(jiàn)
    // https://go.microsoft.com/fwlink/?LinkId=733558
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "build",
            "command": "這里填g++.exe的目錄破停,填完目錄后加上g++.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "-I",
                "這里填OpenCV頭文件目錄",
                "-L",
                "這里填靜態(tài)庫(kù)文件目錄",
                "-l",
                "opencv_img_hash345",
                "-l",
                "opencv_world345"
            ],
            "options": {
                "cwd": "這里填MinGW-w64的bin目錄"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
    ]
}
  • 按下Ctrl+Shift+P組合鍵,在彈出選項(xiàng)卡中輸入c/c++尉剩,選擇C/C++編譯配置(JSON)(C/C++:Edit Configurations(JSON))真慢,會(huì)進(jìn)入c_cpp_properties.json,更改其中includePath:
"includePath": [
                "${workspaceFolder}/**",
                "F:\\CV\\build\\install\\include",
                "F:\\CV\\build\\install\\include\\opencv",
                "F:\\CV\\build\\install\\include\\opencv2"
            ],

依據(jù)個(gè)人情況修改目錄,將include目錄中的opencv理茎、opencv2子目錄也都添加進(jìn)去黑界。注意三個(gè)JSON文件在配置完后都要保存(隨手Ctrl+S是好習(xí)慣。)

  • 修改完成后的目錄結(jié)構(gòu):
目錄結(jié)構(gòu)
  • 完成后點(diǎn)到源碼界面功蜓,選擇調(diào)試园爷,啟動(dòng)調(diào)試(快捷鍵F5),等待編譯完成式撼。執(zhí)行的命令會(huì)在下面終端選項(xiàng)卡顯示出來(lái)童社。跳出圖片,編譯成功著隆。
運(yùn)行圖
說(shuō)明:
  • 報(bào)錯(cuò)很正常扰楼,出現(xiàn)問(wèn)題先檢查JSON文件的路徑是否正確呀癣,路徑均用\\或者/切換下級(jí)。有時(shí)候會(huì)因?yàn)橐粋€(gè)逗號(hào)的丟失導(dǎo)致JSON文件不能正常讀取弦赖。確定JSON文件沒(méi)問(wèn)題了项栏,出現(xiàn)終端報(bào)錯(cuò)記得看報(bào)錯(cuò)的內(nèi)容,如果出現(xiàn)No such file or directory就還是文件路徑有問(wèn)題蹬竖。

  • 源代碼錯(cuò)誤請(qǐng)更改源碼沼沈。

  • 使用gdb調(diào)試的時(shí)候需要注意自己的dotNet(.NET)版本需大于4.6,如果.NET沒(méi)有安裝請(qǐng)通過(guò)傳送門(mén):
    Portal:https://dotnet.microsoft.com/download/dotnet-framework/net48?utm_source=getdotnet&utm_medium=referral
    選擇Download.NET Framework 4.8 Runtime币厕。

  • 建議選裝:微軟常用運(yùn)行庫(kù)
    Portal:這個(gè)去百度查吧列另,到處都有下載。

編譯方式二旦装,編寫(xiě)CMakeLists.txt

這種方式是調(diào)用CMake生成Makefile页衙,使得編譯器按照Makefile里的規(guī)則對(duì)源文件進(jìn)行有序的編譯。
首先請(qǐng)將CMake目錄中的bin子目錄添加到環(huán)境變量中阴绢,可以打開(kāi)終端輸入cmake判斷環(huán)境變量是否設(shè)置成功店乐。

cmake

使用vscode打開(kāi)源文件所在的同級(jí)目錄,新建一個(gè)CMakeLists.txt文件呻袭,輸入以下內(nèi)容:

CMakeLists.txt


cmake_minimum_required(VERSION 3.0.0)
project(main)
include_directories(F:\\CV\\build\\install\\include)
SET(SRC ${PROJECT_SOURCE_DIR}/main.cpp)
link_directories(F:\\CV\\build\\install\\x64\\mingw\\lib)
link_libraries(libopencv_img_hash345.dll.a)
link_libraries(libopencv_world345.dll.a)
add_executable(main ${SRC})


說(shuō)明:

請(qǐng)按照自己的路徑進(jìn)行修改眨八。
cmake_minimum_required(VERSION 3.0.0):聲明CMake最小版本。
project(main):項(xiàng)目名稱main棒妨。
include_directories:頭文件目錄踪古。
SET(SRC ${PROJECT_SOURCE_DIR}/main.cpp):設(shè)置SRC(源碼)為main.cpp含长。
link_directories:靜態(tài)庫(kù)文件目錄券腔。
link_libraries:需要鏈接的庫(kù)文件名稱(這兒必須打全名)。
add_executable:生成可執(zhí)行文件拘泞。

CMakeLists.txt有一套自己編寫(xiě)的語(yǔ)言纷纫,如果想要實(shí)現(xiàn)更復(fù)雜的功能(如把源碼編譯各種類型的庫(kù)文件,條件編譯陪腌,編譯模式Debug或Release辱魁,信息提示等等。這在一個(gè)工程里面是不可或缺的诗鸭。)染簇,就應(yīng)該靠搜索引擎了。

CMakeLists

按下組合鍵Ctrl+Shift+P在選項(xiàng)卡中輸入cmake强岸,會(huì)出現(xiàn)CMake:Configuration锻弓,選中既會(huì)開(kāi)始進(jìn)行cmake操作。
在輸出界面出現(xiàn)Configuring done和Generating done蝌箍,證明cmake完成青灼,會(huì)在源碼同級(jí)目錄生成一個(gè)build目錄暴心,在終端輸入cd build進(jìn)入build目錄,輸入mingw32-make進(jìn)行編譯。編譯完成在build目錄里會(huì)生成main.exe杂拨,輸入.\main.exe嘗試運(yùn)行专普,運(yùn)行成功。

結(jié)語(yǔ):至此弹沽,OpenCV-3.4.5的Windows上開(kāi)發(fā)環(huán)境就初步搭建完成檀夹。愿每個(gè)學(xué)習(xí)視覺(jué)的人都能在這條路上走的更遠(yuǎn)!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末策橘,一起剝皮案震驚了整個(gè)濱河市击胜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌役纹,老刑警劉巖偶摔,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異促脉,居然都是意外死亡辰斋,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)瘸味,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)宫仗,“玉大人,你說(shuō)我怎么就攤上這事旁仿∨悍颍” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵枯冈,是天一觀的道長(zhǎng)毅贮。 經(jīng)常有香客問(wèn)我,道長(zhǎng)尘奏,這世上最難降的妖魔是什么滩褥? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮炫加,結(jié)果婚禮上瑰煎,老公的妹妹穿的比我還像新娘。我一直安慰自己俗孝,他們只是感情好酒甸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著赋铝,像睡著了一般插勤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天饮六,我揣著相機(jī)與錄音其垄,去河邊找鬼。 笑死卤橄,一個(gè)胖子當(dāng)著我的面吹牛绿满,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窟扑,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼喇颁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了嚎货?” 一聲冷哼從身側(cè)響起橘霎,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎殖属,沒(méi)想到半個(gè)月后姐叁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡洗显,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年外潜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挠唆。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡处窥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出玄组,到底是詐尸還是另有隱情滔驾,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布俄讹,位于F島的核電站哆致,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏颅悉。R本人自食惡果不足惜沽瞭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一迁匠、第九天 我趴在偏房一處隱蔽的房頂上張望剩瓶。 院中可真熱鬧,春花似錦城丧、人聲如沸延曙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)枝缔。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間愿卸,已是汗流浹背灵临。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留趴荸,地道東北人儒溉。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像发钝,于是被迫代替她去往敵國(guó)和親顿涣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容