2017年6月21日 星期三

OpenCV 3.2.0 vc14 如何安裝在 Visual Studio 2017

OpenCV 3.2.0 vc14 如何安裝在 Visual Studio 2017

如果需要完整的OpenCV功能需要自己重新編譯,重新編譯可以參考這篇站內文
http://charlottehong.blogspot.com/2017/07/opencv-320-contrib-visual-studio.html
先到官方下載這兩項軟體 (點擊有連結)
OpenCV 為了避免不必要麻煩與最佳化
建議直接解壓縮到C槽不要增加自己的難度了。


文件說明

build文件是官方已經幫你預先編譯好的檔案,開進去opencv\build\x64,可以看到vc14的字樣,vc14好像是 Visual Studio 內的版本 2017 就是 cv14,你可以在軟件內發現不過我忘記從哪裡看了。
也可以從路徑內看另一篇文章 如何在 Visual Studio 2017 使用 bits/stdc++.h 裡面的路徑就有這個代號了。如果是你是舊版本的vc翻翻看路徑是寫版本多少,只要是14都能用。
其他還有像是python就抓python的資料夾那個檔案就可以用在python上了 python 站內文章;如果是MinGW官方沒有幫你預先編譯好,要自己從source這個用cMake自己編譯MingGW站內文章
總而言之會用到的只有
  • build/include
  • build/x64/vc14


部屬 OpenCV

提醒~如果你什麼都不知道最好直接把opencv解壓縮到C槽,降低難易度
首先只要做一次就好的是
  • 系統環境變數加入 bin 路徑
編譯器大概需要三個步驟(每次第一次開新專案)
  • 編譯器加入 include 路徑
  • 編譯器加入 lib 路徑
  • 編譯器加入 lib 檔案
另外 debug/release 以及 x86/x64 都要個別設定,開一次專案要設定4次

環境變數(說明文字在圖下)


搜索一下你的電腦環境變數或系統內容都可以(也可以直接對著本機按右鍵內容)

這裡就有環境變數給你設定了

增加一下bin這裡我 截圖貼錯 位置了 (QuQ 有空再改回來)
正確的位置是:opencv\x64\vc14\bin
到這裡就可以了,只剩下VC的部分

設定編譯器

懶人包打開就能用了:OpenCV_Test
這裡每次開新專案都要重新設定一次,設定儲存在專案上而不是總體設定
新版的2017改版了會找不到win32主控台,可以看這篇換了新UI
Visual Studio 17 更新後 win32主控台 消失不見


開一份新的空專案


新增一份code
/**********************************************************
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;
}
貼上測試代碼

先改成x64

對著專案點右鍵屬性

設定include路徑 (注意看最上方debug x64)

設定lib路徑


加入lib檔案(debug模式選有d結尾的)
如果你要改成 release 模式記得前面的路徑還要再設定一次
  • 編譯器加入 include 路徑
  • 編譯器加入 lib 路徑
  • 編譯器加入 lib 檔案

運行

設定好之後直接按F5運行吧

12 則留言:

  1. 你好,想請問為何我的visual沒有w32主控台應用程式?

    回覆刪除
    回覆
    1. 2017這幾周剛改版,位置變動了。可以查看這篇站內文
      https://charlottehong.blogspot.tw/2017/09/visual-studio-17-win32.html

      刪除
  2. 您好~~ 我照著步驟設定

    Path 也已經設定好了 平台也選擇x64 但是我下載的是opencv3.3 所以
    我的lib檔案我選擇 opencv_world330d;%(AdditionalDependencies)

    但是執行時 會出現

    無法開啟檔案 'opencv_world330d.obj' 請問是怎麼回事呢?

    回覆刪除
    回覆
    1. 這幾天我在試試看新版的

      刪除
    2. 沒有出現這個錯誤正常執行,照著步驟重做一次試試看。
      bin路徑要用x64/vc14/bin 才是正確的。

      刪除
  3. 你好~我遇到了一點問題

    在執行時出現一段錯誤訊息:{ 程式碼無法繼續執行,因為找不到 opencv_world330d.dll} 想請問如何解決?

    回覆刪除
    回覆
    1. 可能是環境變數那個步驟出問題

      刪除
    2. 嗯..今天才發現截圖中的一個步驟出錯了,環境變數那邊的路徑我貼錯了。

      刪除
  4. 請問~在偵錯時說專案已過期是為甚麼呢~

    回覆刪除
  5. 你好,我下載的Lib檔案中是opencv_world331d.lib,我是自動把輸入裡面其他相依性的路徑也改成331嗎?

    另外,想要詢問如果跑出 main 在opencv.test.main.obj中已經定義過了(LNK2005),且說一個或以定義的符號(LNK1169)。請問是出了什麼問題。

    謝謝

    回覆刪除
    回覆
    1. 那個,我好像解決了。
      把下載的檔案名稱改成別的就沒有衝突了

      抱歉,打擾了

      刪除
    2. 不會啦,沒關係~解決就好

      刪除