diff --git a/.claude/settings.local.json b/.claude/settings.local.json index ae4286e..c52275b 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -106,7 +106,11 @@ "Bash(dumpbin //dependents \"C:\\\\\\\\ProgramData\\\\\\\\ANSCENTER\\\\\\\\Shared\\\\\\\\ANSLicensingSystem.dll\")", "Bash(grep -v \"//\")", "Bash(grep -v \"^ *//\")", - "Bash(python strip_folder_lock.py)" + "Bash(python strip_folder_lock.py)", + "Bash(tasklist //FI \"IMAGENAME eq ANSLPR-UnitTest.exe\")", + "Bash(taskkill //PID 41856 //F)", + "PowerShell(Stop-Process -Id 41856 -Force)", + "PowerShell(Start-Process -FilePath \"taskkill.exe\" -ArgumentList \"/PID\",\"41856\",\"/F\" -Verb RunAs -Wait)" ] } } diff --git a/tests/ANSLPR-UnitTest/ANSLPR-UnitTest.cpp b/tests/ANSLPR-UnitTest/ANSLPR-UnitTest.cpp index 7d40447..6bc2401 100644 --- a/tests/ANSLPR-UnitTest/ANSLPR-UnitTest.cpp +++ b/tests/ANSLPR-UnitTest/ANSLPR-UnitTest.cpp @@ -3983,8 +3983,18 @@ int ALPR_OCR_VideoTest() { while (true) { cv::Mat frame; if (!capture.read(frame)) { - std::cout << "\nEnd of video stream.\n"; - break; + std::cout << "\nEnd of video stream — restarting from beginning.\n"; + capture.set(cv::CAP_PROP_POS_FRAMES, 0); + if (!capture.read(frame)) { + // Some backends need a full reopen to rewind cleanly. + capture.release(); + capture.open(videoFilePath); + if (!capture.isOpened() || !capture.read(frame)) { + std::cerr << "Failed to restart video — stopping.\n"; + break; + } + } + frameIdx = 0; } ++frameIdx; @@ -4080,7 +4090,7 @@ int main() #endif // ANSLPR_OD_INDOInferences_FileTest(); //ANSLPR_OD_Inferences_FileTest(); - ANSLPR_OD_FolderInferences_Test(); + //ANSLPR_OD_FolderInferences_Test(); //ANSLPR_OD_VideoTest(); //ANSLPR_BigSize_VideoTest(); //ANSLPR_CPU_VideoTest(); @@ -4089,7 +4099,7 @@ int main() //} //ANSLPR_SingleTask_Test(); //ANSLPR_CPU_StressTest(); - //ANSLPR_MultiGPU_StressTest(); + ANSLPR_MultiGPU_StressTest(); //ANSLPR_MultiGPU_StressTest_SimulatedCam(); // ANSLPR_MultiGPU_StressTest_FilePlayer(); //ANSLPR_OD_CPU_VideoTest();