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 思源體