2018年3月2日 星期五

OpenCV 如何編譯 contrib -- 懶人包批次檔

OpenCV 如何編譯 contrib 指令快速編譯批次檔

寫成批次檔可以自動下載,版本變動的時候自行更改即可~


開源

製作過程並沒有什麼技術含量,主要是還是debug時間最多,一堆沒想到的奇爬問題一直出現,把它寫出來給我自己看方便之後維護文章,有興趣的話也可以看看是怎麼實現全自動編譯的。
我的實現目的是只要輸入版本號,就可以自動在windwos上編譯完成。
版本號對應的方式如下
rem 設置 OpenCV 版本
set cv_version=4.0.1

rem 下載Opencv
git clone -b %cv_version% https://github.com/opencv/opencv
git clone -b %cv_version% https://github.com/opencv/opencv_contrib
首先條件要先達成安裝最新版的 cmake 跟 git,尤其是cmake的這個必須跟著opencv升級,否則編譯過程會出錯,升級的話麻煩的,最後我是放棄了搞些什麼辦法了,直接附在安裝包一起省事。
下載的網址個別是:
值得注意的是,有些人的電腦上已經安裝過了,解決辦法是下載攜帶版,直接開攜帶版的exe而不直接在命令內使用 git 或 cmke。
對應的辦法像這樣
rem 設置 git 與 cmake 位置 (如已安裝環境變數可略過)
set gitPath=Git\bin
set cmakePath=cmake\bin

%~dp0%gitPath%\git
%~dp0%cmakePath%\cmake
再來就是讓cmake自動產生make檔案,語法跟linux差不多,長這個樣子
rem 設置 cmake 參數
set build_dir=build_contrib
set source_dir=opencv
set modules_dir=opencv_contrib\modules
md %build_dir%
cd %build_dir%

rem 建立 cmake 檔案
%~dp0%cmakePath%\cmake -G %mode% -DOPENCV_EXTRA_MODULES_PATH="%~dp0%modules_dir%" "%~dp0%source_dir%"
最後打開 Visutal Studio 來編譯吧~其實這裡有語法,只是沒查到不知道去哪裡找QuQ就算惹,剩最後一部只是按右鍵編譯。
有人知道怎麼操作指令的話~還請留言教一下XD
具體操作是先按 ctrl+shift+b 編譯,編譯完畢之後檔案其實就已經有了。
要輸出到同一個資料夾可以按,左邊 CMakeTargets -> INSTALL 右鍵 然後 按 J 在案B,自動幫你把全部整理到名為 INSTALL 的資料夾。
然後要上面編譯要做兩次,一次是 debug 模式一次是 release 模式,從VS上方選單切換。

批次檔內容

cmake OpenCV contrib_v3.bat
rem @echo off
Title dismInstall By Charlotte.HonG

rem 設置 OpenCV 版本
set cv_version=4.0.1
rem 適用的VS版本[可以用 cmake -G 看到其他選擇]
set mode="Visual Studio 15 2017 Win64"

rem 設置 git 與 cmake 位置 (如已安裝環境變數可略過)
set gitPath=Git\bin
set cmakePath=cmake\bin
path=%path%;%~dp0%gitPath%;%~dp0%cmakePath%

rem 下載Opencv
%~dp0%gitPath%\git clone -b %cv_version% https://github.com/opencv/opencv
%~dp0%gitPath%\git clone -b %cv_version% https://github.com/opencv/opencv_contrib

rem 設置 cmake 參數
set build_dir=build_contrib
set source_dir=opencv
set modules_dir=opencv_contrib\modules
md %build_dir%
cd %build_dir%

rem 建立 cmake 檔案
%~dp0%cmakePath%\cmake -G %mode% -DOPENCV_EXTRA_MODULES_PATH="%~dp0%modules_dir%" "%~dp0%source_dir%"

rem  打開 VS
start "" "OpenCV.sln"
CreateList.bat
::@Echo Off
Title CreatList - By:Charlotte.HonG

set FILENAME1="DebugLib_Lists.txt"
set FILENAME2="ReleaseLib_Lists.txt"

set LIBPATH=%~dp0build_contrib\install\x64\vc15\lib
set LISTPATH=%~dp0build_contrib\install\x64\vc15\bin
set INCTPATH=%~dp0build_contrib\install\include\opencv2

::Lib清單
cd %LIBPATH%
dir *d.lib /b /on> %~dp0%FILENAME1%
dir *401.lib /b /on> %~dp0%FILENAME2%

::路徑清單
echo %INCTPATH%> %~dp0%PathList.txt
echo %LIBPATH%>> %~dp0%PathList.txt

exit
​

虛擬機器無法開啟核心裝置 \\Global \\vmx86

虛擬機器無法開啟核心裝置 \Global \vmx86

某些服務被關掉重新開啟就好,在CMD輸入底下這些。
net start vmci
net start vmx86
net start VMnetuserif
​

cmd 批次檔 bat 如何計時程式跑多少時間

cmd 批次檔 bat 如何計時程式跑多少時間

想要計算批處理到底跑了多久時間,可以參考下面範例
寫好的 function 可以直接 call 來用
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
:: 取得參數指令
SET INSTR=
FOR %%I IN (%*) DO (
    SET "INSTR=!INSTR!%%I "
)

call :TimerStart
:: 開始執行程式
::%INSTR%
timeout /t 1
call :TimerEnd

call :TimerStart
始執行程式
::%INSTR%
timeout /t 2
call :TimerEnd

exit

Rem <================================================
:TimerStart
Rem -------------------------------------------------
rem 取得開始時間
SET A=%TIME%
goto :eof
Rem -------------------------------------------------

Rem <================================================
:TimerEnd
Rem -------------------------------------------------
rem 取得結束時間
SET B=%TIME%

rem 取得時間詳細資料
SET A_HOUR=%A:~0,2%
SET A_MINS=%A:~3,2%
SET A_SECS=%A:~6,2%
SET A_MSEC=%A:~9,2%

SET B_HOUR=%B:~0,2%
SET B_MINS=%B:~3,2%
SET B_SECS=%B:~6,2%
SET B_MSEC=%B:~9,2%

rem FOR debug
rem echo.
rem echo START TIME:%A%
rem echo END   TIME:%B%
rem echo %A_HOUR%:%A_MINS%:%A_SECS%.%A_MSEC%
rem echo %B_HOUR%:%B_MINS%:%B_SECS%.%B_MSEC%

rem 計算耗時
SET /A C_MSEC=B_MSEC-A_MSEC
SET /A C_SECS=B_SECS-A_SECS
SET /A C_MINS=B_MINS-A_MINS
SET /A C_HOUR=B_HOUR-A_HOUR

rem 調整數值
IF %C_MSEC% LSS 0  SET /A C_MSEC+=100 & SET /A C_SECS-=1
IF %C_MSEC% LSS 10 SET C_MSEC=0%C_MSEC%

IF %C_SECS% LSS 0  SET /A C_SECS+=60  & SET /A C_MINS-=1
IF %C_SECS% LSS 10 SET C_SECS=0%C_SECS%

IF %C_MINS% LSS 0  SET /A C_MINS+=60  & SET /A C_HOUR-=1
IF %C_MINS% LSS 10 SET C_MINS=0%C_MINS%

IF %C_HOUR% LSS 0  SET /A C_HOUR+=24
IF %C_HOUR% LSS 10 SET C_HOUR=0%C_HOUR%

echo TimeIs: %C_HOUR%:%C_MINS%:%C_SECS%.%C_MSEC%

ENDLOCAL
goto :eof
Rem -------------------------------------------------
​

dism 如何用 cmd 指令安裝 windwos

dism 如何用 cmd 指令安裝 windwos

直接上寫好的批次檔,MBR可直接使用
EFI 則需自行切割 EFI 曹位,改一下內容
@echo off
Title dismInstall By Charlotte.HonG& Color 1A

rem 安裝資訊
set EsdFile=chgWin10_1709.wim
set InstallDir=K:\
set EFI_dir=%InstallDir%
set Idx=1

rem 查看資訊
Dism /Get-ImageInfo /ImageFile:%EsdFile%
echo .
echo 即將把 %EsdFile% [%Idx%] 安裝到 %InstallDir%
timeout /t 10

rem 格式化 [謹慎使用怕誤格]
rem format %InstallDir% /q /y

rem 安裝 Windwos
call :TimerStart
Dism /apply-image /imagefile:%EsdFile% /index:%idx% /applydir:%InstallDir%
call :TimerEnd

rem 安裝 BCD
bcdboot %EFI_dir%windows /f ALL /s %EFI_dir%

rem 為 MBR 指定開機磁區[EFI不用]
bootsect /nt60 %EFI_dir%

Rem <================================================
:TimerStart
Rem -------------------------------------------------
rem 取得開始時間
SET A=%TIME%
goto :eof
Rem -------------------------------------------------

Rem <================================================
:TimerEnd
Rem -------------------------------------------------
rem 取得結束時間
SET B=%TIME%

rem 取得時間詳細資料
SET A_HOUR=%A:~0,2%
SET A_MINS=%A:~3,2%
SET A_SECS=%A:~6,2%
SET A_MSEC=%A:~9,2%

SET B_HOUR=%B:~0,2%
SET B_MINS=%B:~3,2%
SET B_SECS=%B:~6,2%
SET B_MSEC=%B:~9,2%

rem FOR debug
rem echo.
rem echo START TIME:%A%
rem echo END   TIME:%B%
rem echo %A_HOUR%:%A_MINS%:%A_SECS%.%A_MSEC%
rem echo %B_HOUR%:%B_MINS%:%B_SECS%.%B_MSEC%

rem 計算耗時
SET /A C_MSEC=B_MSEC-A_MSEC
SET /A C_SECS=B_SECS-A_SECS
SET /A C_MINS=B_MINS-A_MINS
SET /A C_HOUR=B_HOUR-A_HOUR

rem 調整數值
IF %C_MSEC% LSS 0  SET /A C_MSEC+=100 & SET /A C_SECS-=1
IF %C_MSEC% LSS 10 SET C_MSEC=0%C_MSEC%

IF %C_SECS% LSS 0  SET /A C_SECS+=60  & SET /A C_MINS-=1
IF %C_SECS% LSS 10 SET C_SECS=0%C_SECS%

IF %C_MINS% LSS 0  SET /A C_MINS+=60  & SET /A C_HOUR-=1
IF %C_MINS% LSS 10 SET C_MINS=0%C_MINS%

IF %C_HOUR% LSS 0  SET /A C_HOUR+=24
IF %C_HOUR% LSS 10 SET C_HOUR=0%C_HOUR%

echo TimeIs: %C_HOUR%:%C_MINS%:%C_SECS%.%C_MSEC%

ENDLOCAL
goto :eof
Rem -------------------------------------------------
​

2018年3月1日 星期四

EFI MBR 互轉分割消失 不小心把磁碟分割刪除了怎麼辦

EFI MBR 互轉分割消失 不小心把磁碟分割刪除了怎麼辦

不要擔心!只要沒格式化只是單存砍分割,或是轉換導致分區消失都可以救回來!
需要軟體diskgenius:http://www.diskgenius.cn/download.php
對著那顆磁碟搜尋分割就好了!如過這時候問你要轉換成 GUID或是MBR 記得選原來的!原來是哪一個就選哪一個,選錯就跟原本一樣跳錯誤,一樣在搜尋一次就好。
如果你是要從 EFI 無損資料轉換到 MBR ,記得只能在 DOS 或 PE 模式下執行,在Win10上面執行會跳錯。
詳細如何無損資料轉換可以參考站內文:
Windows系統 GPT(EFI) 轉 MBR 無損資料可開機不須重灌系統http://charlottehong.blogspot.com/2017/11/windows-gptefi-mbr.html
有損轉換直接砍掉所有分區之後儲存狀態,記得左上角儲存再轉換不然一樣會跳錯,直接轉換即可,這可以在Win10上執行。
如果是反過來的轉換
Windows系統 MBR 轉 GPT(EFI) 無損資料可開機不須重灌系統
http://charlottehong.blogspot.com/2017/11/windows-mbr-gptefi.html
​

2018年2月28日 星期三

Win10 進入桌面之後變成灰階色彩,登入畫面是彩色

Win10 進入桌面之後變成灰階色彩,登入畫面是彩色

不知道按到什麼之後整個桌面變成灰階的,但是登入畫面是正常的彩色的。
按到快捷鍵了 CTRL+Win+C 這個可以轉成灰色,不知道為什麼做這麼近,複製的時候很容易誤按。
設置在這裡,色彩濾鏡。Win10 內建的,目前新版本的Win10 預設已經是不啟用快捷鍵狀態了,不會不小心按到了。
​

2018年2月27日 星期二

Win10 封裝內容 20180227

Win10 封裝內容

聲明:此映像檔僅個人使用,絕不以任何形式公開在網路上
  • 預設帳戶密碼為 1234
  • 內裝軟體皆為免費軟體或試用版
  • Windows為未啟用狀態請盡快輸入正版授權
  • “系統封裝內容 byCHG” 該檔案總共放三處,C:\、使用者資料夾、桌面
封裝版本號是微軟官方下載的1709
全新安裝後僅做以下變動

軟體

  • AcroRdrDC_zh_TW
  • BlueskyFRC_Setup
  • ccsetup
  • ChromeStandaloneSetup64
  • Evernote
  • JavaSetup
  • JPEGView64
  • K-Lite_Codec_Pack_Mega
  • TeamViewer_Setup
  • WinRAR_5.30
  • WRC9Setup
  • Line
  • Skype
  • GitSetup
  • AS SSD Benchmark
  • DiskInfo
  • python
  • git

系統

  • DirectX_9.0c
  • DotNetFramework_2.0-4.6
  • VisualCppRedistributablePackage

系統設置

  • 去除捷徑字樣
  • 工作列按鈕不要合併完成
  • 顯示副檔名
  • 顯示隱藏的系統檔
  • 設置IE首頁為Google
  • 打密碼時亮燈
  • 桌面圖示開啟
  • Win10_NumLock
  • Disable Windows Defender
  • UAC Recovery
  • 輸入法設置預設為英文模文
  • 輸入法設置為不同視窗使用不同輸入法
  • 登入時還原先前視窗
  • 隱藏rar右鍵清單中的壓縮並發送郵件

系統設置 v2

  • 記事本字體修改微軟正黑體
  • 軟件預設開啟程序
  • 視窗內容格子大小優化(日期本來有一小段看不見)

字體

  • Hack
  • Google 思源體
​