@echo off
@rem Make cascade.xml
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set "PATH=%PATH%;!cd!\opencv\build\x64\vc15\bin"
set "ocvThisName=%~nx0"
set "ocvSrcDirPath=src"
set "ocvIcoDirPath=data\ico"
set "ocvPosDirPath=data\pos"
set "ocvNegDirPath=data\neg"
set "ocvVecDirPath=data\pos"
set "ocvMdlDirPath=data\mdl"
set "ocvIcoHeight=20"
set "ocvIcoWidth=20"
set "ocvIcoBgColor=111"
set "ocvIcoBgThresh=1.0"
set "ocvMaxxangle=0.1"
set "ocvMaxyangle=0.0"
set "ocvMaxzangle=0.5"
set "ocvMinHitRate=0.97"
set "ocvMaxFalseAlarmRate=0.1"
set "ocvStage=3"
set "ocvIcoHeight=20"
set "ocvIcoWidth=20"
set "ocvIcoBgColor=111"
set "ocvIcoBgThresh=1.0"
set "ocvMaxxangle=0.1"
set "ocvMaxyangle=0.1"
set "ocvMaxzangle=0.1"
set "ocvMinHitRate=0.97"
set "ocvMaxFalseAlarmRate=0.1"
set "ocvStage=8"
set "ocvParams="
set "ocvParams=!ocvParams!;ocvIcoHeight=!ocvIcoHeight!"
set "ocvParams=!ocvParams!;ocvIcoWidth=!ocvIcoWidth!"
set "ocvParams=!ocvParams!;ocvIcoBgColor=!ocvIcoBgColor!"
set "ocvParams=!ocvParams!;ocvIcoBgThresh=!ocvIcoBgThresh!"
set "ocvParams=!ocvParams!;ocvMaxxangle=!ocvMaxxangle!"
set "ocvParams=!ocvParams!;ocvMaxyangle=!ocvMaxyangle!"
set "ocvParams=!ocvParams!;ocvMaxzangle=!ocvMaxzangle!"
set "ocvParams=!ocvParams!;ocvMinHitRate=!ocvMinHitRate!"
set "ocvParams=!ocvParams!;ocvMaxFalseAlarmRate=!ocvMaxFalseAlarmRate!"
set "ocvParams=!ocvParams!;ocvStage=!ocvStage!"
set "ocvParams=!ocvParams:~1!"
set /a ocvIcoImgNum=0
for %%z in (
"!ocvIcoDirPath!\*"
) do (
set /a "ocvIcoImgNum=!ocvIcoImgNum!+1"
echo.>nul
)
set /a ocvNegImgNum=0
for %%z in (
"!ocvNegDirPath!\*"
) do (
set /a "ocvNegImgNum=!ocvNegImgNum!+1"
echo.>nul
)
call :L_rmNegativeDat
@rem
call :L_mkNegativeDat
set /a ocvIcoImgCnt=0
for %%z in (
"!ocvIcoDirPath!\*"
) do (
set /a "ocvIcoImgCnt=!ocvIcoImgCnt!+1"
set "ocvIcoFileName=%%~nxz"
set "ocvIcoNameDirName=!ocvIcoFileName!.d"
set "ocvPosDatFleName=!ocvIcoFileName!.positive.dat"
set "ocvVecFleName=!ocvIcoFileName!.positive.vec"
echo # !date! !time! %0 !ocvIcoFileName! **************************************** 1>&2
title コマンドプロンプト - !ocvThisName! ico=!ocvIcoImgCnt!/!ocvIcoImgNum! stgN=!ocvStage! ^
negN=!ocvNegImgNum! !ocvIcoFileName!
call :L_rmPositiveDat
call :L_rmPositiveVec
call :L_rmModelXml
@rem
call :L_mkPositiveDat
set /a ocvPosImgCnt=0
for %%z in (
"!ocvPosDirPath!\!ocvIcoNameDirName!\*"
) do (
set /a "ocvPosImgCnt=!ocvPosImgCnt!+1"
echo.>nul
)
echo # !date! !time! ocvPosImgCnt=!ocvPosImgCnt! ocvNegImgNum=!ocvNegImgNum!
if 1 equ 1 (
@rem
call :L_mkPositiveVec
title コマンドプロンプト - !ocvThisName! ico=!ocvIcoImgCnt!/!ocvIcoImgNum! stgN=!ocvStage! ^
negN=!ocvNegImgNum! !ocvIcoFileName! posN=!ocvPosImgCnt!
@rem
call :L_mkModelXml
echo.>nul
)
echo.>nul
)
call :L_mkCascadeDetect
title コマンドプロンプト
goto :eof
:L_mkNegativeDat
(
echo.
echo # !date! !time! %0 ========================================
) 1>&2
:echo cd=!cd!
set "ocvWorkDir=."
set ocv
if not exist "!ocvSrcDirPath!" mkdir "!ocvSrcDirPath!"
(
for %%z in (
"!ocvNegDirPath!\*"
) do (
set "ovcNegFilePath=%%~z"
set "ovcNegFilePath=!ovcNegFilePath:\=/!"
echo ../!ovcNegFilePath!
echo.>nul
)
echo.>nul
) > "!ocvSrcDirPath!/negative.dat"
type "!ocvSrcDirPath!\negative.dat" | sort > "!ocvSrcDirPath!/negative.dat2"
type "!ocvSrcDirPath!\negative.dat2" > "!ocvSrcDirPath!/negative.dat"
if exist "!ocvSrcDirPath!/negative.dat2" del /f /q "!ocvSrcDirPath!\negative.dat2"
set "ocvWorkDir="
goto :eof
:L_rmNegativeDat
(
echo.
echo # !date! !time! %0 ========================================
) 1>&2
:echo cd=!cd!
set "ocvWorkDir=."
if exist "!ocvSrcDirPath!/negative.dat" del /f /q "!ocvSrcDirPath!\negative.dat"
goto :eof
:L_mkPositiveDat
(
echo.
echo # !date! !time! %0 !ocvIcoFileName! ========================================
) 1>&2
if not exist "!ocvPosDirPath!/!ocvIcoNameDirName!" mkdir "!ocvPosDirPath!/!ocvIcoNameDirName!"
pushd "!ocvPosDirPath!/!ocvIcoNameDirName!"
:echo cd=!cd!
set "ocvWorkDir=../../.."
set ocv
echo # !date! !time! ^
opencv_createsamples.exe ^
-info "!ocvPosDatFleName!" ^
-img "!ocvWorkDir!/!ocvIcoDirPath:\=/!/!ocvIcoFileName!" ^
-bg "!ocvWorkDir!/!ocvSrcDirPath:\=/!/negative.dat" ^
-num !ocvNegImgNum! -maxxangle !ocvMaxxangle! -maxyangle !ocvMaxyangle! -maxzangle !ocvMaxzangle! ^
-bgcolor !ocvIcoBgColor! -bgthresh !ocvIcoBgThresh! -w !ocvIcoWidth! -h !ocvIcoHeight!
opencv_createsamples.exe ^
-info "!ocvPosDatFleName!" ^
-img "!ocvWorkDir!/!ocvIcoDirPath:\=/!/!ocvIcoFileName!" ^
-bg "!ocvWorkDir!/!ocvSrcDirPath:\=/!/negative.dat" ^
-num !ocvNegImgNum! -maxxangle !ocvMaxxangle! -maxyangle !ocvMaxyangle! -maxzangle !ocvMaxzangle! ^
-bgcolor !ocvIcoBgColor! -bgthresh !ocvIcoBgThresh! -w !ocvIcoWidth! -h !ocvIcoHeight!
echo # !date! !time! %0 errorlevel=!errorlevel! 1>&2
(
for /f "usebackq tokens=*" %%y in (
`type "!ocvPosDatFleName!"`
) do (
echo !ocvIcoNameDirName!/%%y
echo.>nul
)
echo.>nul
) > "../!ocvPosDatFleName!"
if exist "!ocvPosDatFleName!" del /f /q "!ocvPosDatFleName!"
popd
:echo cd=!cd!
set "ocvWorkDir="
goto :eof
:L_rmPositiveDat
(
echo.
echo # !date! !time! %0 !ocvIcoFileName! ========================================
) 1>&2
:echo cd=!cd!
@rem if exist "!ocvPosDirPath!/!ocvIcoNameDirName!" rmdir /s /q "!ocvPosDirPath!/!ocvIcoNameDirName!"
if exist "!ocvPosDirPath!/!ocvPosDatFleName!" del /f /q "!ocvPosDirPath!\!ocvPosDatFleName!"
goto :eof
:L_mkPositiveVec
(
echo.
echo # !date! !time! %0 !ocvIcoFileName! ========================================
) 1>&2
if not exist "!ocvVecDirPath!/!ocvIcoNameDirName!" mkdir "!ocvVecDirPath!/!ocvIcoNameDirName!"
pushd "!ocvPosDirPath!"
echo cd=!cd!
set "ocvWorkDir=../.."
:set "ocvWorkDir=.."
set ocv
echo # !date! !time! ^
opencv_createsamples.exe ^
-info "!ocvPosDatFleName!" ^
-vec "!ocvVecFleName!" ^
-num !ocvPosImgCnt! -w !ocvIcoWidth! -h !ocvIcoHeight!
opencv_createsamples.exe ^
-info "!ocvPosDatFleName!" ^
-vec "!ocvVecFleName!" ^
-num !ocvPosImgCnt! -w !ocvIcoWidth! -h !ocvIcoHeight!
echo # !date! !time! %0 errorlevel=!errorlevel! 1>&2
popd
:echo cd=!cd!
set "ocvWorkDir="
goto :eof
:L_rmPositiveVec
(
echo.
echo # !date! !time! %0 !ocvIcoFileName! ========================================
) 1>&2
:echo cd=!cd!
if exist "!ocvVecDirPath!/!ocvVecFleName!" del /f /q "!ocvVecDirPath!\!ocvVecFleName!"
goto :eof
:L_mkModelXml
(
echo.
echo # !date! !time! %0 !ocvIcoFileName! ========================================
) 1>&2
if not exist "!ocvMdlDirPath!/!ocvIcoNameDirName!" mkdir "!ocvMdlDirPath!/!ocvIcoNameDirName!"
pushd "data"
:echo cd=!cd!
set "ocvWorkDir=.."
set /a ocvPosImgCnt8=!ocvPosImgCnt!*80/100
set ocv
echo # !date! !time! ^
opencv_traincascade.exe ^
-data "!ocvWorkDir!/!ocvMdlDirPath:\=/!/!ocvIcoNameDirName!" ^
-vec "!ocvWorkDir!/!ocvVecDirPath:\=/!/!ocvVecFleName!" ^
-bg "!ocvWorkDir!/!ocvSrcDirPath:\=/!/negative.dat" ^
-numPos !ocvPosImgCnt8! -numNeg !ocvNegImgNum! -featureType LBP ^
-maxFalseAlarmRate !ocvMaxFalseAlarmRate! -minHitRate !ocvMinHitRate! ^
-w !ocvIcoWidth! -h !ocvIcoHeight! -numStages !ocvStage!
start /b /high /wait ^
opencv_traincascade.exe ^
-data "!ocvWorkDir!/!ocvMdlDirPath:\=/!/!ocvIcoNameDirName!" ^
-vec "!ocvWorkDir!/!ocvVecDirPath:\=/!/!ocvVecFleName!" ^
-bg "!ocvWorkDir!/!ocvSrcDirPath:\=/!/negative.dat" ^
-numPos !ocvPosImgCnt8! -numNeg !ocvNegImgNum! -featureType LBP ^
-maxFalseAlarmRate !ocvMaxFalseAlarmRate! -minHitRate !ocvMinHitRate! ^
-w !ocvIcoWidth! -h !ocvIcoHeight! -numStages !ocvStage!
echo # !date! !time! %0 errorlevel=!errorlevel! 1>&2
popd
:echo cd=!cd!
set "ocvWorkDir="
goto :eof
:L_rmModelXml
(
echo.
echo # !date! !time! %0 !ocvIcoFileName! ========================================
) 1>&2
:echo cd=!cd!
@rem if exist "!ocvMdlDirPath!/!ocvIcoNameDirName!" rmdir /s /q "!ocvMdlDirPath!/!ocvIcoNameDirName!"
goto :eof
:L_mkCascadeDetect
title コマンドプロンプト - !ocvThisName! mkCascadeDetect.py
call .\venv\Scripts\activate
@rem python mkCascadeDetect.py
deactivate
goto :eof
2019年7月17日水曜日
mkCascadeXml.cmd
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿