OpenCV 3.2.0 的擴充 Contrib 函式庫如何編譯 與 使用 (Visual Studio)
關於一般的使用可以參考站內文章:OpenCV 3.2.0 vc14 如何安裝在 Visual Studio 2017
OpenCV 從第三版開始就把一些函式庫拆出來放到 Contrib 上如果要使用要自己重新編一次整份,這個編譯CPU不好可能要不少時間。
站長編譯的 VS2017 版本載點如下;點擊安裝即可,會自動部屬環境變數。
站內連結 懶人包:http://charlottehong.blogspot.com/2017/12/opencv320-contrib.html
站內連結 懶人包:http://charlottehong.blogspot.com/2017/12/opencv320-contrib.html
導航
下載
記得版本就下對opencv341要對opencv341 contrib,另外 VS2017 多次改版 cmake 要跟著升級不然make出來的東西VS不能編譯,會一堆失敗。
我第一次使用的時候版本錯了,一直出現錯誤找不到原因
cmake 會彈出 error configuring process, project files may be invalid 的錯誤信息
出現這個八成是版本錯了或者是沒有使用圖形介面選路徑(這個應該是cmake的bug)
OpenCV_Contrib:https://github.com/opencv/opencv_contrib
版本從這裡選擇不要直接直接下
懶人包連結:
OpenCV_Contrib:https://github.com/opencv/opencv_contrib/tree/3.4.1
如果有安裝 Git 可以直接打指令省下解壓縮時間與空間
git clone -b 3.4.1 https://github.com/opencv/opencv
git clone -b 3.4.1 https://github.com/opencv/opencv_contrib
沒有的話按右邊下載zip檔案下來把兩個都下載下來
下載 cmake
根據自己的作業系統選擇正確的版本
CMAKE
打開之後最上面兩個路徑,第一個是opencv的路徑,如果是用 git 下載的就是選到下載的解壓後的資料夾,如果是從官方下載的選到source資料夾;
第二個是編譯後的路徑,選到你喜歡能夠找到的位置即可,記得創個空資料夾包起來。
第二個是編譯後的路徑,選到你喜歡能夠找到的位置即可,記得創個空資料夾包起來。
先按左下角configure,然後跳出要你選編譯器,選你正在用的版本;注意圖中有個Win64建議選64位元的,效能較佳。
然後再按一下 configure ,第二次如果會出錯,看一下上面提到的。
接著按一下 Generate 就完成了,右邊 Open Project 可以直接打開;如果你有多個 Visual Studio 最好手動打該正確的版本,按一下打開專案,然後再找到路徑內的專案打開,再來別急著自己按。
接著按一下 Generate 就完成了,右邊 Open Project 可以直接打開;如果你有多個 Visual Studio 最好手動打該正確的版本,按一下打開專案,然後再找到路徑內的專案打開,再來別急著自己按。
到此完成第一階段了,已經產生需要編譯的檔案了
編譯生成檔案
對著專案按右鍵重建方案,準備好在按這裡會編譯很久且途中不能反悔關不掉;我自己實測i7 4790K約15~20分、i5 4460會到1小時。
這裡我是使用Debug模式重建,如果你需要使用Release模式編譯OpenCV需要在這裡選擇;兩個都需要就要個別編譯一次!
完成編譯了,只剩下使用。
如何使用 OpenCV
把名稱更改為 OpenCV320_VC15 放到C槽底下
再來下載兩個批次檔:https://mega.nz/#F!B993FSKJ!NZ2YRRUGSb9r4JQQyHslpw
再來下載兩個批次檔:https://mega.nz/#F!B993FSKJ!NZ2YRRUGSb9r4JQQyHslpw
把CreatList放到這裡點兩下運行,會多出兩個文字文件,先把他打開放著。(這個只是取得這個資料夾內所有 .lib 檔名稱)
打開你 Debug 可以看到這裡的檔案每個檔名結尾都有一個d表示是Debug模式用的,沒有Debug是給Release用的,因為這裡還沒編譯打開查看會是空的。
打開你 Debug 可以看到這裡的檔案每個檔名結尾都有一個d表示是Debug模式用的,沒有Debug是給Release用的,因為這裡還沒編譯打開查看會是空的。
專案的建設
貼上測試的代碼:
/**********************************************************
Name :
Date : 2016/05/29
By : CharlotteHonG
Final: 2016/05/29
**********************************************************/
#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);
/* 開啟畫布 */
imshow("OpenCV Test By:Charlotte.HonG", img);
waitKey(0);
return 0;
}
接下來你可以考慮把剛剛的模式改為Release模式在重新編譯一次;接著把檔案重新複製到C曹執行剛剛重複的步驟,就可以獲得兩個版本的檔案了,其中只需要注意引入的dll檔案,這裡我已經幫你把檔案清待分開了,在不同的模式輸入不同的清單即可。
其他補充 - 快速流程
- 下載指令替代
- Cmake部分其實可以用指令替代
- 指令開啟專案 -> CTRL+SH+B -> 換Release版本在一次
- 對著 INSTALL 右鍵, J, B
- install資料夾指令移動到C曹
- 指令配置bin環境變數
沒有留言:
張貼留言