[圖文] OpenCV 4.0.1 安裝配置在 Visual Studio 2019
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsW5Ej1te1D55Zs_mYvk0Puc2rXokGsGmU8Tjh1E9Y2a-UbdlzEmMdtfuin9feX5pw18oaqUCyM_Gr8Iss3iT3wyW2wJOSQGirE10a73qlZcyzYNfb2HUqXGABAm5opVOJUxFc4urxYO0/s320/testpass.png)
2024-02-04
1. 新版的 Visual Studio 2022 + OpenCV490 可以參考新文章https://charlottehong.blogspot.com/2024/02/opencv-490-win11-visual-studio-2022.html
軟體下載
先到官方下載這兩項軟體 (點擊有連結)
- OpenCV401:https://sourceforge.net/projects/opencvlibrary/files/4.0.1/opencv-4.0.1-vc14_vc15.exe/download
(我是故意放帶版本號連結的,這樣下面教學才能直接貼上不用改版本號。)
本文範例opencv載官方的這個
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlXuXHpzztrWTCA4TCSJfRzz8jF5Y4nT_fNDwUTnWdKpxlgqMtSKlklbHpEb5w9Cc9PFlI9BZXpXWqUD11ee6l-cgIRVbFy18AszrpLYwuf4kzDZngEGHqL_oatbJWkPLm0CkoN-NxW_I/s320/Snipaste_2019-02-24_03-04-41.png)
並直接安裝到C曹
這邊建議跟著我做,因為路徑如果改了,本篇教程很多部分也要跟著改
一般都是看著教程複製貼上這做,到時候很容易漏掉沒改到…
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOg4yRqrUm_r5eAA8VL-CmsHQfP2UWaQ2y9jOkVwbvnTFfZ_MWMnIR3Z8IeqffR18eBIYrXk7Gu89Zh298G5yCPW8iyLL-UeDysp2wrWvH5vC53QoQcnFvAxm5k0Y_MM6r7GCih4Gcrjc/s320/Snipaste_2019-02-24_03-06-42.png)
- Visual Studio 2019
關於 Visual Studio 如何安裝可以參考
https://charlottehong.blogspot.com/2018/09/c-visual-studio-2017.html
文件說明
build 是待會要用到的文件,全部都在裡面
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8kqtdYebdR5hwMoXa_ZesW9-ipTBZHlv8OtLElBRjsEYiX346lTwzRGXjZ9bKaElwRVGbypZ8_VAB-uYTb3pFSgYaNebj5tYQ4_w_Z-RgQSFirzQlGwgQz_PEcDgFSzQiPEG3FGriX-c/s320/Snipaste_2019-02-24_03-09-20.png)
這個位置是要設置在環境變數的(專給VS用的)
C:\opencv\build\x64\vc15\bin
這個位置給 C++ 引入標頭檔的
C:\opencv\build\include
這個位置專給 VS 引入lib檔的
C:\opencv\build\x64\vc15\lib
以上如果是 VS2015 就是找vc14
部屬OpenCV
環境變數
這是一次性的工作,設置好環境變數,這台電腦以後就不用再設置了。
對著左下角的開始按右鍵,打開管理員模式的 powershell。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6Praw13mVM649s0bCXigNQceIzrIOTqT-J2FBtAmUmWwJuIE1wjfa128Rw4tKFtO2QKuY-K5aCZdgr0lHlEfnvaPooxxs0u00_XYhdxxTtMQOr1keyS8ahj922BKisi2DQUKlczUHF1w/s320/Snipaste_2019-02-24_04-09-32.png)
如果是使用 win7 的用戶
- 用管理員打開cmd,然後在cmd內輸入 powershell 就可打開
(非SP1版本可能沒有…參考文中置頂的舊文設置)
輸入下面指令 (連點三下直接全選)
[System.Environment]::SetEnvironmentVariable("PATH", $Env:Path + ";C:\opencv\build\x64\vc15\bin", "Machine")
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiWfCqrq9vTVjTm4f7e1HhC-Bc1GUMqsPwIOSvKKhsKTnhomnDkdJXRcJ7L94_2q0MTAZB6Zb5f-lgw9Gxc-pVnGe741qILUnvoQyhsNday_oOKyhJn8QlzdI0gIcZ-Ct45wEQqeAJnVU/s320/Snipaste_2019-04-20_14-53-42.png)
輸入之後不會有什麼提示,想要確定是否成功可以輸入
[environment]::GetEnvironmentVariable("PATH", "Machine")
查詢目前環境變數是否有輸入
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0_VkZ2VxqRVuaPzbKNVtu-C37OqRs5pIdomH6VloBhzoB906_kUr0wLT21OrfyTQCG1h-DJM6sODLCNpAwCAEUx_XIH1nX9nJy3Px5wno5oTdPiIIOK1MdOzBn_0UKk-QtT-KbA01QQ8/s320/Snipaste_2019-04-20_14-56-11.png)
檢查的話複製紅框部分,然後打開資料夾貼上路徑欄並打開,檢查看看是不是真的有東西。
- 噴這個錯誤
LNK1104 無法開啟檔案 'opencv_world401d.lib'
,也是回來檢查紅框路徑。 - 記得VS在此之前不要打開歐,如果已經先打開了,這邊做完後關閉重新啟動VS就好了。
- 終端機要用管理權限開啟,不然那行指令會沒作用。
VS2019設定
讓我們先建立新專案吧
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirOPbf_jelw2GTsE7SQhRZoRk6u9mBhlhZ-6-mUwr8dzZM-n9CXYDqj6TLnaf8V2N9ARadCSpBblzDwIzjoayAUGpo7JfNdTHsBgnhS2lGC8Q4h9dmc26yVtrEXqacSYbentz62FDevHQ/s320/Snipaste_2019-02-24_03-25-48.png)
直接選擇空白專案
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixjdA-18RR5Knhv1VHHRrD32SsmgxCPp1jqqmOrGpymDvExofWJRyadzvCFagVgssQBaIxr0VRJ1Mn56zmOGK8FNfSAB6Nx25Rykf7VmauIwjEyTv3dJNtgNAKbjbFA3kWo2YDc-sCZrA/s320/Snipaste_2019-02-24_03-26-27.png)
這邊隨意打一個名稱就可以下一步了
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5UlUVZHBXZISSQog-F1HSiTiEB5jypS0O19_KAdcgCUNohArETHxGShTD5HtqsryMkFop7kLCGyoUcswRheNS9TBwe105IsFKk6Evn3uMmb_mnVPkNEr0dIfg2zOflRIEak6fiATCPi0/s320/Snipaste_2019-02-24_03-27-13.png)
創建好專案再來就設置opencv吧~先新增屬性表
這張圖多看幾眼,右鍵的位置點錯就錯了…
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvmnh8EQlh89OLC28LKJf3_EGZe10-Q6WzjramrYh_vr9ea74pQHfRg-U7lijo9LHMLQTGf5L2NH1C3yEqeFDUxkgDE7YXJDKNr98v7iIanJAb1D3GpXTZr14LXUEl0uqDTdYc3_aQeE8/s320/Snipaste_2019-02-24_03-53-30.png)
然後新增名稱 opencv401d.props
這邊不要自己改,照著打稍後會說明
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijnhFehpTMdPjlpYqSbjtI8qc7ApnewbOCnNnsQ_iEpuSjPA3eRVshTde1y6k229i6gDK807RnDDpXrKQ6msvH52TmYmmVAB3mbSmVRtzyARcuHICkrmUzu3Phtf2je8Is-Qf_MBKRmSE/s320/Snipaste_2019-02-24_03-53-59.png)
好了之後會出現在這個位置,點他兩下
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjs_41bIpxsmnNZbRDYeeG2xroSHKa7Bw5zveTyf5Fe-F_8rLlmLfyFaZxLvd7L4WCynhy5wKAj9edPGvqFv4htlVEp3MrpQBAlkpwWC9UxqRkMdHUh-2uMy6xv-i6R52ODVWLZyUtfK08/s320/Snipaste_2019-02-24_03-56-01.png)
加入 include 路徑 和 lib 路徑
include目錄的最前面加上 C:\opencv\build\include;
函式庫目錄最前面加上 C:\opencv\build\x64\vc15\lib;
(他原本是有東西的,原本的東西要留著中間用分號隔開)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivQ_v5rM1WgmvSdpb4hp40ZL51RH_OvDxv1TWa1b5owSNwCZfgwM7jix8OlqUSUpJ46lwcWxtsUt5EfYyryr2j03KQlxotQGAbglrz7T81QusAe2Aj_xVovq8k3IkNmG-jdH0qTnl3uGE/s320/Snipaste_2021-01-06_02-33-27.png)
加入 lib 檔案
這邊點那個小三角,在按編輯
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9Einscz-Sdqx-hVwRE4r7M2NFwktVh3Vlq2R4raMU-AV8QRSrIZhHfps0o8ZtVREsHDeHACAya1Xwn_UZ18CA94tpXkbBtJP45_4Hg7rcyYuG3_wTryB83HkOCf7dAPbhR74OYF5ztWk/s320/Snipaste_2019-02-24_04-00-44.png)
然後輸入 opencv_world401d.lib
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAVlP8XVnXofNj-6t270xnH6zX0358unpYWmWuMnpm5IoS2cO2atR2BlboVLvk6D6fuLF_aXDbj_tLqZ6AXZ8w8xv9OgalMU8LkDuiMeoYaPA70nvm2mz0uqgov5uPinrXIdqu548EvTA/s320/Snipaste_2019-02-24_04-01-26.png)
這邊補充說明一下 opencv_world401d.lib 中的 401 是 opencv 的版本 4.0.1版本,如果下載的是別的版本,記得要自己修正。
測試代碼
現在讓我們新增一份新的程式碼
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDjv4FY7D8n0gW_5ID1XsXayw3rf9OXjPLX8ZP6TYDoukwXT0f8GL2Oa9dH1hYGmeRKOwCxKb4jfwvSPbnsPjwaDUs8uSSbaluCHgNLXO8bId7MkzT7RTOMvQiBMThUl4w6YL555n87Io/s320/Snipaste_2019-02-24_04-03-44.png)
直接就預設名稱下一步吧
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPIEOvSRIMQ4ia2YM5dqO6sQZ_4mTFKqL_LKjHTt8iuXk-VtYJnW7Uynzcp9EAejyTriag-d1HLeFJy1TY8zFITMtZF_EPtNTnDwuhAaD1v8VIYSNv6iQBUsPvRnDegh91yQYwB2GAP_I/s320/Snipaste_2019-02-24_04-03-54.png)
接下來輸入測試程序
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char const* argv[]) {
Mat img(270, 720, CV_8UC3, Scalar(56, 50, 38));
line(img, Point(20, 40), Point(120, 140), Scalar(255, 0, 0), 3);
rectangle(img, Point(150, 40), Point(250, 140), Scalar(0, 0, 255), -1);
circle(img, Point(330, 90), 50, Scalar(0, 255, 0), -1);
ellipse(img, Point(460, 90), Size(60, 40), 45, 0, 360, Scalar(255, 255, 0), 2);
Point points[1][5];
int x = 40, y = 540;
points[0][0] = Point(0 + y, 50 + x);
points[0][1] = Point(40 + y, 0 + x);
points[0][2] = Point(110 + y, 35 + x);
points[0][3] = Point(74 + y, 76 + x);
points[0][4] = Point(28 + y, 96 + x);
const Point * ppt[1] = { points[0] };
int npt[] = { 5 };
polylines(img, ppt, npt, 1, 1, Scalar(0, 255, 255), 3);
putText(img, "Test Passed !!", Point(10, 230), 0, 3, Scalar(255, 170, 130), 3);
namedWindow("OpenCV Test By:Charlotte.HonG", WINDOW_AUTOSIZE);
imshow("OpenCV Test By:Charlotte.HonG", img);
waitKey(0);
return 0;
}
像這個樣子
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF4Ms4n3fgMdlFRpGzWlgSXhyphenhyphenK5z-87sLmo8E0xbRLo-ifw2vnDZBtZB7BNRzKyiZdolrVEXucklAG8MoK5mo8pW5YfjyIw-LEZbN_Vbi8BauuQ9HMZ9UcdRBW2IzThvOe6bSQlVhn7-4/s320/Snipaste_2019-02-24_04-04-52.png)
記得確認一下上方是不是 debug/x64 模式,因為剛剛只有設置這個模式。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwuEAJ7cNmCMq58Wm9jGWGFs1LnC4QBhw9J1UtqGvpQr44IT0EQbvqiU5dXrLz2YvbkTCEGEibro8Ky7NZjDzeCP0SkihuIkYrQ0Y2aVa6w6JC6hDXilAPKI7QL-oLsWSzT7qO1zJuoTc/s320/Snipaste_2019-02-24_04-05-51.png)
然後就按F5測試吧
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgXlvmPNfaEYiIRpBtr2tcGKZfYf2_ARS5xY3rwv-cbg0qsMprGbVjNt0X3RMfOQ7UZD8PQM9CdZytr3G7U_NVB0DssiPxSEmEat8RWrFD1LMRGgyEKoE0V89qy6QHADwcBIt_F7TgyOQ/s320/Snipaste_2019-02-24_04-13-47.png)
恭喜完成 opencv 的設置~到這邊就已經設置完畢。
練習
趁著現在記憶猶新,趕快來練習,現在就試著設置 relese 模式吧~
目前是設置 debug/x64 模式,如果要設置 release 模式,最初一開始的時候屬性表要加在 release | x64 裡面。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz4XSrx52KIWUGvUk0HtqdRH7AJnDa9NuCRVYhR8AmMDqqIurT9RuKOVFqoqPWrSfPFU2ofU6fa1zEmIn36NkDUc-00GXEQtjn3zitUiAQt5NmTg__4h3tueGmEQR3acxMdCazKdKEldM/s320/Snipaste_2019-02-24_04-24-58.png)
而在 release 最後面加入lib的時候要使用沒有 d 結尾的 `opencv_world401.lib,才是正確的檔案,這邊設置錯誤會無法編譯。
設置完畢代碼不需要更動,編譯的時候VS上方從 debug/x64 模式更改為 release/x64 模式即可~
至於 x86 模式因為 官方給的檔案並沒有幫你預先編譯好,就沒辦法做了,想要使用x86模式需要自己重新編一,詳細可以參考這邊站內文章重新編譯。
https://charlottehong.blogspot.com/2017/07/opencv-320-contrib-visual-studio.html
重複使用
現在已經設置完畢了,並且你會發現,在你的專案目錄會有一個 opencv401d.props
剛剛要你不要更改就是因為連同版本號一起打上來,這樣比較好識別。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzPdDN78gsKlZmm2yBqVaBMdajTjAZ-pntyV2gZCpW2g1rqkOjyktfWDSuNDrG4KNvX-e15lAB9EdpEPFHlwK9OOzeKd5qp2gEaJ2WtsCrTwCkeaJQ_RFuLNdZsYttjfVGuKIoI_5Ll1Q/s320/Snipaste_2019-02-24_04-19-09.png)
這個把他複製出來存好,他是可以重複使用的
下次開別的新專案直接新增進來就好,完全不用再設置opencv。
使用方式像這樣,加入這個屬性表
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbw-eXgtNE6ORckgpNpc4vRsmZr9BMDGL8Ll5t4Z9l8yW23aKFQEuXO5Hl62laWPphC61a2P4Jbq0DImJLttvqDmjUe31pN3hQKWiSo5yZD3bvQ8RoXXxlGw57ZnETwGlt-AvImtVD9tY/s320/Snipaste_2019-02-24_04-19-41.png)
需要注意的是屬性表建議是複製一份到專案內,然後才按上圖紅框的加入現有屬性表!而不是打開A專案,然後瀏覽到B專案的位置,加入B專案的屬性表,
這是為了確保A專案的獨立性,不這樣做哪天B專案砍掉了,或是B專案有變動到時候A會跟著壞掉…
最後
有什麼問題可以在下方留言發問喔。
最後如果還是不行的話可以參考我幫你設置好的專案,載下來打開就可以用瞜。
(裡面有設置好的 debug/rekease 屬性表,你也可以載下來直接複製過去用。)
https://github.com/hunandy14/CHG_OpenCV_test/tree/OpenCV-4.0.1
覺得本篇教學章寫的很清楚,很有幫助的話,不妨留個言讓我知道吧~
最重要的是,分享給你的朋友們,讓他們一起來學習opencv吧~
短網址幫你設置好了
http://bit.ly/2U0DEiQ [圖文] OpenCV 4.0.1 安裝配置在 Visual Studio 2019
其他關連文章
最新 OpenCV 4.5.1 文章可以參考這邊,用另一種方式配置只要搞一次就好,往後開新專案都是直接用,完全不需要設置(有懶人包一鍵配置)
https://charlottehong.blogspot.com/2021/01/opencv-451-visual-studio-2019.html
舊版的 Visual Studio 2017 可以參考這篇https://charlottehong.blogspot.com/2017/06/opencv-320-vc14-visual-studio-2017.html