2019年2月24日 星期日

[圖文] OpenCV 4 安裝配置在 Visual Studio 2019

[圖文] OpenCV 4.0.1 安裝配置在 Visual Studio 2019


2024-02-04
1. 新版的 Visual Studio 2022 + OpenCV490 可以參考新文章https://charlottehong.blogspot.com/2024/02/opencv-490-win11-visual-studio-2022.html


軟體下載

先到官方下載這兩項軟體 (點擊有連結)

  1. OpenCV401:https://sourceforge.net/projects/opencvlibrary/files/4.0.1/opencv-4.0.1-vc14_vc15.exe/download
    (我是故意放帶版本號連結的,這樣下面教學才能直接貼上不用改版本號。)

本文範例opencv載官方的這個

並直接安裝到C曹

這邊建議跟著我做,因為路徑如果改了,本篇教程很多部分也要跟著改
一般都是看著教程複製貼上這做,到時候很容易漏掉沒改到…

  1. Visual Studio 2019

關於 Visual Studio 如何安裝可以參考
https://charlottehong.blogspot.com/2018/09/c-visual-studio-2017.html

文件說明

build 是待會要用到的文件,全部都在裡面

這個位置是要設置在環境變數的(專給VS用的)
C:\opencv\build\x64\vc15\bin

這個位置給 C++ 引入標頭檔的
C:\opencv\build\include

這個位置專給 VS 引入lib檔的
C:\opencv\build\x64\vc15\lib

以上如果是 VS2015 就是找vc14

部屬OpenCV

環境變數

這是一次性的工作,設置好環境變數,這台電腦以後就不用再設置了。

對著左下角的開始按右鍵,打開管理員模式的 powershell。

如果是使用 win7 的用戶

  • 用管理員打開cmd,然後在cmd內輸入 powershell 就可打開
    (非SP1版本可能沒有…參考文中置頂的舊文設置)

輸入下面指令 (連點三下直接全選)

[System.Environment]::SetEnvironmentVariable("PATH", $Env:Path + ";C:\opencv\build\x64\vc15\bin", "Machine")

輸入之後不會有什麼提示,想要確定是否成功可以輸入

[environment]::GetEnvironmentVariable("PATH", "Machine")

查詢目前環境變數是否有輸入

檢查的話複製紅框部分,然後打開資料夾貼上路徑欄並打開,檢查看看是不是真的有東西。

  • 噴這個錯誤 LNK1104 無法開啟檔案 'opencv_world401d.lib',也是回來檢查紅框路徑。
  • 記得VS在此之前不要打開歐,如果已經先打開了,這邊做完後關閉重新啟動VS就好了。
  • 終端機要用管理權限開啟,不然那行指令會沒作用。




VS2019設定

讓我們先建立新專案吧

直接選擇空白專案

這邊隨意打一個名稱就可以下一步了

創建好專案再來就設置opencv吧~先新增屬性表

這張圖多看幾眼,右鍵的位置點錯就錯了…

然後新增名稱 opencv401d.props 這邊不要自己改,照著打稍後會說明

好了之後會出現在這個位置,點他兩下

加入 include 路徑 和 lib 路徑

include目錄的最前面加上 C:\opencv\build\include;
函式庫目錄最前面加上 C:\opencv\build\x64\vc15\lib;
(他原本是有東西的,原本的東西要留著中間用分號隔開)

加入 lib 檔案

這邊點那個小三角,在按編輯

然後輸入 opencv_world401d.lib

這邊補充說明一下 opencv_world401d.lib 中的 401 是 opencv 的版本 4.0.1版本,如果下載的是別的版本,記得要自己修正。




測試代碼

現在讓我們新增一份新的程式碼

直接就預設名稱下一步吧

接下來輸入測試程序

/**********************************************************
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);
 /* 開啟畫布 */
 namedWindow("OpenCV Test By:Charlotte.HonG", WINDOW_AUTOSIZE);
 imshow("OpenCV Test By:Charlotte.HonG", img);
 waitKey(0);
 return 0;
}

像這個樣子

記得確認一下上方是不是 debug/x64 模式,因為剛剛只有設置這個模式。

然後就按F5測試吧

恭喜完成 opencv 的設置~到這邊就已經設置完畢。

練習

趁著現在記憶猶新,趕快來練習,現在就試著設置 relese 模式吧~
目前是設置 debug/x64 模式,如果要設置 release 模式,最初一開始的時候屬性表要加在 release | x64 裡面。

而在 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
剛剛要你不要更改就是因為連同版本號一起打上來,這樣比較好識別。

這個把他複製出來存好,他是可以重複使用的
下次開別的新專案直接新增進來就好,完全不用再設置opencv。

使用方式像這樣,加入這個屬性表

需要注意的是屬性表建議是複製一份到專案內,然後才按上圖紅框的加入現有屬性表!而不是打開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 

2019年2月18日 星期一

Win10 封裝後,如何重現第一次啟動出現 OOBE

Win10 封裝後,如何重現第一次啟動出現 OOBE

功能藏在gpedit.msc的這個地方:
相對應的註冊碼是:
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\OOBE]
"DisablePrivacyExperience"=dword:00000001
有了這條應該可以修改不少東西了,之前一直想實現的利用註冊表關閉windwos defender 應該也在這裡。

果然在這裡,這一條是直接從 gpedit.msc 設定的,跟一般網路上找到的關閉defender有不一樣,原因我也不是很清楚。網路上的版本,不知道win10更新哪一版後來就失效惹QQ
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender]
"DisableAntiSpyware"=dword:00000001
windwos update應該也在這裡,只不過 gpedit.msc 尚在 “尚未設定” 的情況下註冊表裡面是空的連那個大分類都沒有,要找要先去設置一下。

參考文章來自於

2019年2月6日 星期三

【免重灌】 Win11/Win10 家用版升級專業版

Win10 隨機版序號 如何在家用版升級專業版時不需要重灌


適用於專業隨機版或專業彩盒版,輸入序號後發現版本錯誤無法運行的狀況。如何你是還沒購買的人,推薦直接從商店付款購買就好信用卡付款完電腦會自動升級,不需要手動升級。

升級完畢之後會立即重啟開始前記得先存檔,下面就讓我們開始吧。

如果是反過來 專業版 要降 回家用版 可以參考這篇站內文
CHG: 【免重灌】Windows 專業版如何降級回家用版 (charlottehong.blogspot.com)

升級到專業版

先按下 Win+X 然後再按下 A ➔ 打開終端機。然後輸入底下的代碼
irm bit.ly/UpgradeWinPro|iex

輸入完畢之後還需要輸入兩次Y確認,確認完後再等個1分鐘左右自動跳出封面圖的進度提示視窗。
進度條跑完升級完畢之後會立即重啟,然後就結束了~













-----------------------------------------------------------------------------------------
以下是舊文可以看到這邊就好
-----------------------------------------------------------------------------------------
如果你是購買隨機版序號,那麼是沒有辦法直接輸入升級上去的,專業版只能在專業版上輸入,一個很惱人的設定。之前有一組序號輸入可以轉換版本,現在好像不行了,測試怎樣都不行。
隨機版的序號輸入之後,會把主機板序號上傳到微軟伺服器綁定,這台主機板以後重灌都不需要再輸入序號只要聯網就可以自動激活。
解決辦法就是利用這一點,利用第二個作業系統的專業版輸入序號並激活主機板。這個第二個系統可以是 從別台電腦移機過來的Win10專業版硬碟,也可以是 USB隨身碟 安裝全新Win10專業版。
之後再回到妳原本的系統在市集上尋找 Windows pro 就會發現從原本的需要XXXX金額變成安裝字樣,點擊安裝就可以無損升級瞜~


UX533 升級紀錄

以我為例,我的筆電是UX533,升級的時候我是使用 USB外接SSD硬碟。
  1. 在外接硬碟上安裝Windwos10 專業版
  2. 選擇該外接硬碟的系統開機
  3. 開機之後輸入序號激活這個系統
  4. 開回於本筆電的系統,在市集搜尋 Windows Pro 原本購買的按鈕會變成升級

安裝 Win10 到 外接裝置

就是一般正常安裝的流程~
(你可以先把硬碟插在桌電上安裝,裝好在接上筆電。)

在同一台筆電上安裝

跟安裝在桌電完全一樣,只是同時要插2個USB裝置,一個是官方軟體製作的映像檔 USB Win10 ,一個是用來安裝全新系統的USB裝置。
因為原本系統的硬碟還在,安裝的時候千萬不要格式化錯了,把自己的C曹給砍了。

選擇外接硬碟開機

筆電因為UEFI加速開機的關係,可能沒辦法透過傳統的按delete或F2進入BIOS,要開機進Win10系統操作,由作業系統設定讓它下次開機時自動打開BIOS。
步驟:
正常開機然後到 設定->更新->復原->進階重新啟動,然後就可以直接開到選單了。
這邊要注意,以前的BIOS時代是選硬碟,現在的UEFI時代會看到作業系統的名字而不是硬碟型號,因為都是 Win10 摁…你會看到兩個名字一模一樣的,猜猜看吧你有50%的機率會中的www。(我建議你猜第二個)

激活

進入設定裡面,選擇更新與安全性,然後左邊就有一欄啟用,因為我的電腦已經啟用過了,所以沒拍到什麼,沒有啟用過這邊很明顯就會叫你輸入序號了。
如果是從別台點腦拔過來的硬碟,會因為硬體不同變成未激活版,這邊一樣可以激活。詳情文末有說明,是”合法”的激活完畢在裝回去原電腦就好。

升級

主機板輸入激活完畢之後再來用同樣的方法開回原本的作業系統,或是直接拔掉外接裝置也可以,因為只剩一個系統,沒有第二個了會自動開進去唯一的那一個。
開進入之後到市集搜尋 Win10 pro
(這邊是因為我已經升級過了,變成購買按鈕了。)
然後就給她按升級,跑完就得到免重灌的升級專業版了。





Windwos激活與移機

Windwos激活是開機的時候驗證你的硬體設備,並不是跟著硬碟或是跟著系統跑的。個人測試結果,這個硬體設備是主機板,什麼都換過了就是不能換版。
  • 你把正常激活正版的主機的硬碟,拆到未激活電腦接上開機會馬上變成未激活。
  • 相反的你從未激活的主機把硬碟拆到已經驗證過的正版主機,也會馬上變成正版。
你可能會疑惑,那我買的正版版權,如果主機板爆了就不就沒了。不會的你可以打電話去跟微軟說,我電腦壞了它會協助你更新的。
目前結合線上帳戶,只要當初激活的電腦有在事前或事後登入微軟帳戶,是可以直接從網頁選擇你要剔除哪一台授權,更新到哪一台的。(筆電的OEM授權與Win7免費升級上來的授權除外)
硬碟移動到別台主機的話,以前 Win7 時代卡到 IDE模式與 AHCI 模式的過渡時期,兩台電腦因為主機板的廠商預設,設定不一樣會導致無法開機,甚至讓Win7壞掉裝回去也不能開機等都有遇過。
目前新電腦主機板統一預設都是AHCI模式,主機版不要太舊,任意移機是不會出事的,Win10本身對於硬體驅動的支援也提高了很多,移動主機之後會見到第一次灌好Win10的轉圈圈,並寫著 初始化中... 的畫面,那就是自動適應新的硬體了。

關於在USB安裝 Win10

其實這一步是有辦法在Win10系統下完成的,我是直接在 Win10 上使用 dism++ 釋放Win10的映像檔到USB移動裝置完成安裝的。
dism++官方網站:https://www.chuyu.me/zh-Hans/
全中文的操作其實蠻容易的,有興趣的可以自己摸索一下。

2019年1月27日 星期日

ASUS 設置 OpenVPN 如何連接內部區網

ASUS 設置 OpenVPN 如何連接內部區網

在設置前需要有一個前置任務,機器必須獲得對外的真實IP,最常見的作法也就是你要在機器裡面打入中華電信的連線帳密,讓機器自己硬撥連接到網路。
再來第二個需要做的是設置DDNS,這邊使用華碩附贈的比較簡單,就是打開然後填入你需要自訂的就好。
設置這個步驟是因為並不是每個人都有固定IP,如果是浮動IP斷電重連之後不一定會拿到同一個,這時候要從DDNS去查IP
再來我們打開openvpn的設置,這邊紅色框框照著設置就好
其中紫色的部分介面類型有 TAP 跟 TUN 可以選擇,這邊不一樣的地方在於 TAP 可以讓連接者進入內網 (LAN) 的區域網路分享檔案,但是 TAP 不支持手機如果你選擇這個模式手機就不能連了。
再來我們往下一點,還有一個重要的地方,重新導向用戶端流向,這個打勾取決在於你要不要讓連接者翻牆,打勾之後就可以靠這台機器跳IP了,沒有的話僅僅只是進入這個網域。
設置好之後儲存,並回到最上方切到一般設定,然後匯出vpn的檔案,匯出的檔案就可以使用了,預設可以使用登入這台機器的帳密。
要設置多的使用者在下面一點地方,可以新增自己要的
匯出的檔案就可以傳到手機或其他電腦連接使用了,可以到官方下載 openvpn的客戶端,過程不是太麻煩,就是匯入檔案,然後選擇再連接即可。必須要注意的是如果有更改設置,有些設置後要重新匯出檔案原本的就不能用了。
如果上面的設置無效,建議先回到原廠設置,把設定都清掉了重來一次試試看看。

2019年1月25日 星期五

RT-N16 tomatoUSB 設置 access point (存取點模式)

RT-N16 tomatoUSB 設置 access point (存取點模式)

這個功能幾乎各大廠都有,以華碩原廠為例子設置成存取點模式之後,就可以當作是主路由器的擴充,第二台路由器可以接到 WAN/LAN 任意一點都可以。
連接完畢之後,原本是有4個LAN,現在變成8個LAN了的意思,然後還多一個wifi點。
刷成第三方韌體之後貌似沒有提供這樣的快捷設置,只能手動設置了,下面是設置的步驟,建議設置前先回復到原廠,避免先前有改過那些設定忘記了,進而影響到這邊的設置。
在開始前先說明這裡的環境,主路由器所使用的虛擬IP是
192.168.2.1 / 255.255.255.0

關閉WAN接口

第一個步驟先關閉WAN接口,因為我們不需要NAT了,直接就是接上主路由器,由主路由器處理。
其中有一個 Bridge WAN port to primary LAN ,簡單來說就是把 WAN 接口變成 LAN 的意思;這接口被關掉了,它也沒作用了就把它變成LAN使用吧~

設置存取點路由器的IP

這台路由器雖然是存取點,但本身也需要占用一個IP,在IP Address 中輸入192.168.2.251,必須跟主路由器處在同一個網段。
其中251是隨意設置的,你可以挑自己喜歡的~自己要記住
如果你的主路由器是 192.168.50.1,那麼就設置成 192.168.50.251 依此類推
其他依照途中設置關閉 DHCP 以及設置預設閘道,預設閘道要對應到主路由器的虛擬IP。
以上設置完畢之後儲存並重新啟動即可完成(視情況可能需要重新啟動電腦),現在這台N16就像一台交換器一樣,你可以將網路源頭任意插在 WAN/LAN 其中一個孔,接上之後其他4個口以及wifi會自動連上主路由器的網路。