2026-06-02 17:32:27 +08:00
|
|
|
@echo off
|
|
|
|
|
chcp 950 >nul
|
|
|
|
|
title 機車影片 自動去紅燈工具
|
|
|
|
|
cd /d "%~dp0"
|
|
|
|
|
setlocal enabledelayedexpansion
|
|
|
|
|
|
|
|
|
|
rem === 偵測 Python(優先用已知安裝路徑,避開 Microsoft Store 假捷徑)===
|
|
|
|
|
set "PYEXE="
|
|
|
|
|
if exist "C:\Python314\python.exe" set "PYEXE=C:\Python314\python.exe"
|
|
|
|
|
if not defined PYEXE (
|
|
|
|
|
where py >nul 2>nul && set "PYEXE=py"
|
|
|
|
|
)
|
|
|
|
|
if not defined PYEXE (
|
|
|
|
|
where python >nul 2>nul && set "PYEXE=python"
|
|
|
|
|
)
|
|
|
|
|
if not defined PYEXE goto no_python
|
|
|
|
|
"%PYEXE%" --version >nul 2>nul
|
|
|
|
|
if errorlevel 1 goto no_python
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
:menu
|
|
|
|
|
cls
|
|
|
|
|
echo ============================================================
|
|
|
|
|
echo 機車影片 自動去紅燈工具
|
|
|
|
|
echo ============================================================
|
|
|
|
|
echo.
|
|
|
|
|
echo 影片根目錄(BASE_DIR): E:\videos
|
|
|
|
|
echo 只要輸入資料夾名稱(例如 20260502),程式會自動到上面找。
|
|
|
|
|
echo.
|
2026-06-03 21:10:07 +08:00
|
|
|
echo [1] 開始處理 批次去紅燈(資料夾內每支影片各自輸出一支)
|
|
|
|
|
echo [2] 離開
|
|
|
|
|
echo [3] 預覽 ROI 先確認時速表的框選位置(換不同影片來源時才需要)
|
2026-06-02 17:32:27 +08:00
|
|
|
echo.
|
|
|
|
|
set "mode="
|
|
|
|
|
set /p mode=請輸入選項並按 Enter (1/2/3):
|
2026-06-03 21:10:07 +08:00
|
|
|
if "%mode%"=="1" goto process
|
|
|
|
|
if "%mode%"=="2" goto end
|
|
|
|
|
if "%mode%"=="3" goto preview
|
2026-06-02 17:32:27 +08:00
|
|
|
goto menu
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
:preview
|
|
|
|
|
echo.
|
|
|
|
|
echo ------------------------------------------------------------
|
|
|
|
|
echo 預覽 ROI:抽一張畫面、畫紅框,確認有沒有框住時速表
|
|
|
|
|
echo ------------------------------------------------------------
|
|
|
|
|
set "folder="
|
|
|
|
|
set /p folder=請輸入資料夾名稱或路徑(例如 20260502):
|
|
|
|
|
if "%folder%"=="" goto preview
|
|
|
|
|
set "ROIARG="
|
|
|
|
|
set "roi="
|
|
|
|
|
set /p roi=自訂時速表座標 x y w h(用空格分隔;直接 Enter 用程式預設):
|
|
|
|
|
if not "%roi%"=="" set "ROIARG=--roi %roi%"
|
|
|
|
|
set "ATARG="
|
|
|
|
|
set "at="
|
|
|
|
|
set /p at=要抽第幾秒的畫面當預覽(直接 Enter 用第 0 秒):
|
|
|
|
|
if not "%at%"=="" set "ATARG=--preview-at %at%"
|
|
|
|
|
echo.
|
|
|
|
|
echo 執行預覽中,請稍候...
|
|
|
|
|
"%PYEXE%" "%~dp0auto_remove_redlight.py" "%folder%" --preview %ROIARG% %ATARG%
|
|
|
|
|
echo.
|
|
|
|
|
echo ------------------------------------------------------------
|
|
|
|
|
echo 預覽圖已輸出到本資料夾:
|
|
|
|
|
echo preview_roi.png 開這張看紅框有沒有框住時速表
|
|
|
|
|
echo preview_crop.png 裁切出來的時速表區域
|
|
|
|
|
echo preview_crop_processed.png 送進 OCR 前的影像
|
|
|
|
|
echo.
|
|
|
|
|
echo 若框得不準: 記下正確的 x y w h,下次預覽輸入即可重試;
|
|
|
|
|
echo 確定後建議把座標填進 auto_remove_redlight.py 最上面的 ROI。
|
|
|
|
|
echo ------------------------------------------------------------
|
|
|
|
|
echo.
|
|
|
|
|
pause
|
|
|
|
|
goto menu
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
:process
|
|
|
|
|
echo.
|
|
|
|
|
echo ------------------------------------------------------------
|
|
|
|
|
echo 開始處理:選資料夾 - 勾選影片 - 自動去紅燈
|
|
|
|
|
echo ------------------------------------------------------------
|
|
|
|
|
set "LIST=%TEMP%\redlight_sel.txt"
|
|
|
|
|
del "%LIST%" >nul 2>nul
|
|
|
|
|
rem (1) 互動選擇器:選資料夾 + 空白鍵勾選影片,選好寫出清單檔
|
|
|
|
|
"%PYEXE%" "%~dp0auto_remove_redlight.py" --select --base-dir "E:\videos" --out-list "%LIST%"
|
|
|
|
|
if not exist "%LIST%" (
|
|
|
|
|
echo.
|
|
|
|
|
echo 已取消或未選擇任何影片,返回選單。
|
|
|
|
|
pause
|
|
|
|
|
goto menu
|
|
|
|
|
)
|
|
|
|
|
rem (2) 讀清單,組成帶引號的參數字串
|
|
|
|
|
set "FILES="
|
|
|
|
|
for /f "usebackq delims=" %%L in ("%LIST%") do set "FILES=!FILES! "%%L""
|
|
|
|
|
del "%LIST%" >nul 2>nul
|
|
|
|
|
if not defined FILES (
|
|
|
|
|
echo 清單為空,返回選單。
|
|
|
|
|
pause
|
|
|
|
|
goto menu
|
|
|
|
|
)
|
|
|
|
|
echo.
|
|
|
|
|
echo ============================================================
|
|
|
|
|
echo 即將開始去紅燈(4K 逐秒 OCR + 無損切割,請勿關閉視窗)。
|
|
|
|
|
echo 輸出會放在影片所在資料夾的 no_redlight 子資料夾。
|
|
|
|
|
echo ============================================================
|
|
|
|
|
echo.
|
|
|
|
|
rem (3) 帶著勾選好的影片檔當參數,呼叫主程式處理
|
|
|
|
|
"%PYEXE%" "%~dp0auto_remove_redlight.py"!FILES!
|
|
|
|
|
echo.
|
|
|
|
|
echo ============================================================
|
|
|
|
|
echo 處理結束。請到該資料夾的 no_redlight 子資料夾查看成果,
|
|
|
|
|
echo 並可開啟各支的 *_speeds.csv 檢查 OCR 是否正確。
|
|
|
|
|
echo ============================================================
|
|
|
|
|
echo.
|
|
|
|
|
pause
|
|
|
|
|
goto menu
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
:no_python
|
|
|
|
|
echo.
|
|
|
|
|
echo [錯誤] 找不到可用的 Python。
|
|
|
|
|
echo.
|
|
|
|
|
echo 這台電腦目前只有 Microsoft Store 假捷徑,不是真的 Python。
|
|
|
|
|
echo 請到 https://www.python.org/downloads/ 安裝 Python 3,
|
|
|
|
|
echo 安裝時務必勾選 Add python.exe to PATH。
|
|
|
|
|
echo.
|
|
|
|
|
echo 裝好後在命令列執行: pip install -r "%~dp0requirements.txt"
|
|
|
|
|
echo 並安裝 FFmpeg(https://ffmpeg.org/download.html)且加入 PATH。
|
|
|
|
|
echo.
|
|
|
|
|
pause
|
|
|
|
|
goto end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
:end
|
|
|
|
|
endlocal
|