_winpack_run_python_sample.cmd 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. @ECHO OFF
  2. SETLOCAL
  3. SET SCRIPT_DIR=%~dp0
  4. SET "OPENCV_SETUPVARS_SCRIPT=setup_vars_opencv4.cmd"
  5. SET "BUILD_DIR=%SCRIPT_DIR%\..\..\build"
  6. IF NOT EXIST "%BUILD_DIR%\%OPENCV_SETUPVARS_SCRIPT%" (
  7. :: Winpack DLDT
  8. SET "BUILD_DIR=%SCRIPT_DIR%\..\..\..\build"
  9. )
  10. IF NOT EXIST "%BUILD_DIR%\%OPENCV_SETUPVARS_SCRIPT%" (
  11. ECHO ERROR: OpenCV Winpack installation is required
  12. pause
  13. exit
  14. )
  15. :: normalize path
  16. for %%i in ("%PACKAGE_BUILD_DIR%") do SET "PACKAGE_BUILD_DIR=%%~fi"
  17. :: Detect Python binary
  18. python -V 2>nul
  19. IF %ERRORLEVEL% EQU 0 (
  20. SET PYTHON=python
  21. GOTO :PYTHON_FOUND
  22. )
  23. CALL :QUERY_PYTHON 3.12
  24. IF %ERRORLEVEL% EQU 0 GOTO :PYTHON_FOUND
  25. CALL :QUERY_PYTHON 3.11
  26. IF %ERRORLEVEL% EQU 0 GOTO :PYTHON_FOUND
  27. CALL :QUERY_PYTHON 3.10
  28. IF %ERRORLEVEL% EQU 0 GOTO :PYTHON_FOUND
  29. CALL :QUERY_PYTHON 3.9
  30. IF %ERRORLEVEL% EQU 0 GOTO :PYTHON_FOUND
  31. CALL :QUERY_PYTHON 3.8
  32. IF %ERRORLEVEL% EQU 0 GOTO :PYTHON_FOUND
  33. CALL :QUERY_PYTHON 3.7
  34. IF %ERRORLEVEL% EQU 0 GOTO :PYTHON_FOUND
  35. CALL :QUERY_PYTHON 3.6
  36. IF %ERRORLEVEL% EQU 0 GOTO :PYTHON_FOUND
  37. CALL :QUERY_PYTHON 3.5
  38. IF %ERRORLEVEL% EQU 0 GOTO :PYTHON_FOUND
  39. CALL :QUERY_PYTHON 3.4
  40. IF %ERRORLEVEL% EQU 0 GOTO :PYTHON_FOUND
  41. CALL :QUERY_PYTHON 2.7
  42. IF %ERRORLEVEL% EQU 0 GOTO :PYTHON_FOUND
  43. GOTO :PYTHON_NOT_FOUND
  44. :QUERY_PYTHON
  45. SETLOCAL
  46. SET PY_VERSION=%1
  47. SET PYTHON_DIR=
  48. CALL :regquery "HKCU\SOFTWARE\Python\PythonCore\%PY_VERSION%\InstallPath" PYTHON_DIR
  49. IF EXIST "%PYTHON_DIR%\python.exe" (
  50. SET "PYTHON=%PYTHON_DIR%\python.exe"
  51. GOTO :QUERY_PYTHON_FOUND
  52. )
  53. CALL :regquery "HKLM\SOFTWARE\Python\PythonCore\%PY_VERSION%\InstallPath" PYTHON_DIR
  54. IF EXIST "%PYTHON_DIR%\python.exe" (
  55. SET "PYTHON=%PYTHON_DIR%\python.exe"
  56. GOTO :QUERY_PYTHON_FOUND
  57. )
  58. ::echo Python %PY_VERSION% is not detected
  59. ENDLOCAL
  60. EXIT /B 1
  61. :QUERY_PYTHON_FOUND
  62. ECHO Found Python %PY_VERSION% from Windows Registry: %PYTHON%
  63. ENDLOCAL & SET PYTHON=%PYTHON%
  64. EXIT /B 0
  65. IF exist C:\Python27-x64\python.exe (
  66. SET PYTHON=C:\Python27-x64\python.exe
  67. GOTO :PYTHON_FOUND
  68. )
  69. IF exist C:\Python27\python.exe (
  70. SET PYTHON=C:\Python27\python.exe
  71. GOTO :PYTHON_FOUND
  72. )
  73. :PYTHON_NOT_FOUND
  74. ECHO ERROR: Python not found
  75. IF NOT DEFINED OPENCV_BATCH_MODE ( pause )
  76. EXIT /B
  77. :PYTHON_FOUND
  78. ECHO Using Python: %PYTHON%
  79. :: Don't generate unnecessary .pyc cache files
  80. SET PYTHONDONTWRITEBYTECODE=1
  81. IF [%1]==[] goto rundemo
  82. set SRC_FILENAME=%~dpnx1
  83. echo SRC_FILENAME=%SRC_FILENAME%
  84. call :dirname "%SRC_FILENAME%" SRC_DIR
  85. call :dirname "%PYTHON%" PYTHON_DIR
  86. PUSHD %SRC_DIR%
  87. CALL "%BUILD_DIR%\%OPENCV_SETUPVARS_SCRIPT%"
  88. :: repair SCRIPT_DIR
  89. SET "SCRIPT_DIR=%~dp0"
  90. ECHO Run: %*
  91. %PYTHON% %*
  92. SET result=%errorlevel%
  93. IF %result% NEQ 0 (
  94. IF NOT DEFINED OPENCV_BATCH_MODE (
  95. SET "PATH=%PYTHON_DIR%;%PATH%"
  96. echo ================================================================================
  97. echo ** Type 'python sample_name.py' to run sample
  98. echo ** Type 'exit' to exit from interactive shell and open the build directory
  99. echo ================================================================================
  100. cmd /k echo Current directory: %CD%
  101. )
  102. )
  103. POPD
  104. EXIT /B %result%
  105. :rundemo
  106. PUSHD "%SCRIPT_DIR%\python"
  107. CALL "%BUILD_DIR%\%OPENCV_SETUPVARS_SCRIPT%"
  108. :: repair SCRIPT_DIR
  109. SET "SCRIPT_DIR=%~dp0"
  110. %PYTHON% demo.py
  111. SET result=%errorlevel%
  112. IF %result% NEQ 0 (
  113. IF NOT DEFINED OPENCV_BATCH_MODE ( pause )
  114. )
  115. POPD
  116. EXIT /B %result%
  117. :dirname file resultVar
  118. setlocal
  119. set _dir=%~dp1
  120. set _dir=%_dir:~0,-1%
  121. endlocal & set %2=%_dir%
  122. EXIT /B 0
  123. :regquery name resultVar
  124. SETLOCAL
  125. FOR /F "tokens=*" %%A IN ('REG QUERY "%1" /reg:64 /ve 2^>NUL ^| FIND "REG_SZ"') DO SET _val=%%A
  126. IF "x%_val%x"=="xx" EXIT /B 1
  127. SET _val=%_val:*REG_SZ=%
  128. FOR /F "tokens=*" %%A IN ("%_val%") DO SET _val=%%A
  129. ENDLOCAL & SET %2=%_val%
  130. EXIT /B 0