OpenCV 环境变量参考

发布时间:2024年01月10日

介绍

OpenCV 可以根据运行时环境更改其行为:

  • 启用额外的调试输出或性能跟踪
  • 修改默认位置和搜索路径
  • 调整某些算法或一般行为
  • 启用或禁用变通方法、安全功能和优化

笔记:

  • ? 标记最常用的变量
  • 具有此类名称的变量描述了变量系列,其中应更改为预定义值之一,例如 , , ...VAR_${NAME}${NAME}VAR_TBBVAR_OPENMP
在 Windows 中设置环境变量

在终端或 cmd 文件 (bat-file) 中:

设置 MY_ENV_VARIABLE=true
C:\my_app.exe

在 GUI 中:

  • 转到“设置->系统->关于”
  • 单击右侧的“高级系统设置”
  • 在新窗口中,单击“环境变量”按钮
  • 向“用户变量”列表添加条目
在 Linux 中设置环境变量

在终端或 shell 脚本中:

导出 MY_ENV_VARIABLE=true
./my_app

或作为单个命令:

MY_ENV_VARIABLE=true ./my_app
在 Python 中设置环境变量
导入操作系统
os.environ[“MY_ENV_VARIABLE”] =
import cv2 # 在此之后设置的变量可能不起作用

类型

  • non-null?- 设置为 anything 以启用功能,在某些情况下可以解释为其他类型(例如路径)
  • 布尔值?- , , , / , , , ,1TruetrueTRUE0FalsefalseFALSE
  • number/_size_ - 无符号数字、后缀、、、、、MBMbmbKBKbkb
  • string?- 纯字符串,也可以有一个结构
  • path?- 到文件,到目录
  • 路径?- 在 Windows 上分隔,在其他路径上分隔;:

一般,核心

名字类型违约描述
OPENCV_SKIP_CPU_BASELINE_CHECK非 null不检查当前 CPU 是否支持构建使用的所有功能(基线)
OPENCV_CPU_DISABLE,或 -separated;禁用使用 CPU 功能的代码分支(调度代码)
OPENCV_SETUP_TERMINATE_HANDLER布尔值true (Windows)使用 std::set_terminate 安装自己的终止处理程序
OPENCV_LIBVA_RUNTIME文件路径libva for VA 互操作性实用程序
OPENCV_ENABLE_MEMALIGN布尔值true(静态分析、内存清理器、模糊化_WIN32除外?启用对齐的内存分配
OPENCV_BUFFER_AREA_ALWAYS_SAFE布尔值为多缓冲区分配启用安全模式(每个缓冲区单独)
OPENCV_KMEANS_PARALLEL_GRANULARITY数字1000调优算法并行工作分布参数parallel_for_(..., ..., ..., granularity)
OPENCV_DUMP_ERRORS布尔值true(调试或 Android)、false(其他)打印有关异常的额外信息(登录到 Android)
OPENCV_DUMP_CONFIG非 null将构建配置打印到 stderr (getBuildInformation)
OPENCV_PYTHON_DEBUG布尔值在 Python 绑定中启用额外的警告
OPENCV_TEMP_PATH非 null / 路径/tmp/(Linux)、(Android)、(Windows)/data/local/tmp/GetTempPathA临时文件的目录
OPENCV_DATA_PATH_HINT路径findDataFile 的路径
OPENCV_DATA_PATH路径findDataFile 的路径
OPENCV_SAMPLES_DATA_PATH_HINT路径findDataFile 的路径
OPENCV_SAMPLES_DATA_PATH路径findDataFile 的路径

链接:

伐木

名字类型违约描述
? OPENCV_LOG_LEVEL字符串日志记录级别(请参阅下面的接受值)
OPENCV_LOG_TIMESTAMP布尔值使用时间戳进行日志记录
OPENCV_LOG_TIMESTAMP_NS布尔值将 NSec 添加到日志记录时间戳
水平:
  • 0, , , , , ,OOFFSSILENTDISABLEDISABLED
  • F,FATAL
  • E,ERROR
  • W, , ,WARNINGWARNWARNINGS
  • I,INFO
  • D,DEBUG
  • V,VERBOSE

核心/parallel_for

名字类型违约描述
? OPENCV_FOR_THREADS_NUM数字0设置线程数
OPENCV_THREAD_POOL_ACTIVE_WAIT_PAUSE_LIMIT数字16parallel_for后端调整 pthreads
OPENCV_THREAD_POOL_ACTIVE_WAIT_WORKER数字2000parallel_for后端调整 pthreads
OPENCV_THREAD_POOL_ACTIVE_WAIT_MAIN数字10000parallel_for后端调整 pthreads
OPENCV_THREAD_POOL_ACTIVE_WAIT_THREADS_LIMIT数字0parallel_for后端调整 pthreads
OPENCV_FOR_OPENMP_DYNAMIC_DISABLE布尔值使用单个 OpenMP 线程

后端

OPENCV_LEGACY_WAITKEY 某些模块具有多个可用的后端,以下变量允许选择特定的后端或更改将探测后端的默认优先级(例如,在打开视频文件时)。

名字类型违约描述
OPENCV_PARALLEL_BACKEND字符串选择特定的paralel_for后端(、、TBBONETBBOPENMP)
OPENCV_PARALLEL_PRIORITY_${名称}数字设置后端优先级,默认为 1000
OPENCV_PARALLEL_PRIORITY_LIST字符串,以分隔,按优先级顺序排列的后端列表
OPENCV_UI_BACKEND字符串选择 HighGUI 后端进行窗口渲染(、GTKGTK3GTK2QTWIN32)
OPENCV_UI_PRIORITY_${名称}数字设置 highgui 后端优先级,默认为 1000
OPENCV_UI_PRIORITY_LIST字符串,以分隔,按优先级顺序排列的 Hioghgui 后端列表
OPENCV_VIDEOIO_PRIORITY_${名称}数字设置 VideoIO 后端优先级,默认为 1000
OPENCV_VIDEOIO_PRIORITY_LIST字符串,以分隔,按优先级顺序排列的 VideoIO 后端列表

插件

一些外部依赖项可以分离到一个动态库中,该库将在运行时加载(插件)。以下变量允许更改这些插件的默认搜索位置和命名模式。

名字类型违约描述
OPENCV_CORE_PLUGIN_PATH路径用于搜索核心插件的目录
OPENCV_CORE_PARALLEL_PLUGIN_${名称}字符串、globparallel_for插件库名称(glob),例如TBB的默认值为“opencv_core_parallel_tbb*.so”
OPENCV_DNN_PLUGIN_PATH路径用于搜索?DNN?插件的目录
OPENCV_DNN_PLUGIN_${名称}字符串、globparallel_for插件库名称(glob),例如TBB的默认值为“opencv_core_parallel_tbb*.so”
OPENCV_CORE_PLUGIN_PATH路径目录搜索?highgui?插件(是的,它是 CORE)
OPENCV_UI_PLUGIN_${NAME}字符串、globHighGUI?插件库名称 (glob)
OPENCV_VIDEOIO_PLUGIN_PATH路径用于搜索?VideoIO?插件的目录
OPENCV_VIDEOIO_PLUGIN_${名称}字符串、globVideoIO?插件库名称 (glob)

OpenCL的

注意:OpenCL 器件规范格式为 ,例如<Platform>:<CPU|GPU|ACCELERATOR|nothing=GPU/CPU>:<deviceName>AMD:GPU:

名字类型违约描述
OPENCV_OPENCL_RUNTIMEfilepath 或disabledOpenCL 运行时库的路径(例如,OpenCL.dlllibOpenCL.so)
? OPENCV_OPENCL_DEVICEstring 或disabled选择特定的 OpenCL 设备。请参阅上面注释中的规格格式。有关详细信息,请参阅“链接”部分。
OPENCV_OPENCL_RAISE_ERROR布尔值如果在 OpenCL 内核准备和执行期间出现故障,则引发异常(仅限发布版本)
OPENCV_OPENCL_ABORT_ON_BUILD_ERROR布尔值如果 OpenCL 内核编译失败,则中止
OPENCV_OPENCL_CACHE_ENABLE布尔值启用 OpenCL 内核缓存
OPENCV_OPENCL_CACHE_WRITE布尔值允许写入缓存,否则缓存将是只读的
OPENCV_OPENCL_CACHE_LOCK_ENABLE布尔值使用 .lock 文件在使用相同 OpenCL 缓存的多个应用程序之间同步(可能不适用于网络驱动器)
OPENCV_OPENCL_CACHE_CLEANUP布尔值自动从缓存中删除旧条目(旧 OpenCL 运行时的剩余条目)
OPENCV_OPENCL_VALIDATE_BINARY_PROGRAMS布尔值验证加载的二进制 OpenCL 内核
OPENCV_OPENCL_DISABLE_BUFFER_RECT_OPERATIONS布尔值true (Apple)、false (其他)为非连续数据下载启用解决方法
OPENCV_OPENCL_BUILD_EXTRA_OPTIONS字符串将额外的选项传递给 OpenCL 内核编译
OPENCV_OPENCL_ENABLE_MEM_USE_HOST_PTR布尔值缓冲区分配的解决方法/优化
OPENCV_OPENCL_ALIGNMENT_MEM_USE_HOST_PTR数字4OPENCV_OPENCL_ENABLE_MEM_USE_HOST_PTR参数
OPENCV_OPENCL_DEVICE_MAX_WORK_GROUP_SIZE数字0允许减小 maxWorkGroupSize
OPENCV_OPENCL_PROGRAM_CACHE数字0限制 OpenCL 内核缓存中的程序数量
OPENCV_OPENCL_RAISE_ERROR_REUSE_ASYNC_KERNEL布尔值如果异步内核失败,则引发异常
OPENCV_OPENCL_BUFFERPOOL_LIMIT数字1 << 27(Intel 设备)、0(其他)限制缓冲区 bool 使用的内存
OPENCV_OPENCL_HOST_PTR_BUFFERPOOL_LIMIT数字与OPENCV_OPENCL_BUFFERPOOL_LIMIT相同,但用于HOST_PTR缓冲区
OPENCV_OPENCL_BUFFER_FORCE_MAPPING布尔值强制 clEnqueueMapBuffer
OPENCV_OPENCL_BUFFER_FORCE_COPYING布尔值强制 clEnqueueReadBuffer/clEnqueueWriteBuffer
OPENCV_OPENCL_FORCE布尔值强制运行 OpenCL 内核,即使不满足通常的条件(例如 dst.isUMat)
OPENCV_OPENCL_PERF_CHECK_BYPASS布尔值强制运行 OpenCL 内核,即使不满足通常的性能相关条件(例如,映像非常小)
SVM (共享虚拟内存) - 默认禁用
名字类型违约描述
OPENCV_OPENCL_SVM_DISABLE布尔值禁用 SVM
OPENCV_OPENCL_SVM_FORCE_UMAT_USAGE布尔值
OPENCV_OPENCL_SVM_DISABLE_UMAT_USAGE布尔值
OPENCV_OPENCL_SVM_CAPABILITIES_MASK数字
OPENCV_OPENCL_SVM_BUFFERPOOL_LIMIT数字与 OPENCV_OPENCL_BUFFERPOOL_LIMIT 相同,但适用于 SVM 缓冲区
链接:

跟踪/剖析

名字类型违约描述
? OPENCV_TRACE布尔值启用跟踪
OPENCV_TRACE_LOCATION字符串OpenCVTrace跟踪文件名(“${name}-$03d.txt”)
OPENCV_TRACE_DEPTH_OPENCV数字1
OPENCV_TRACE_MAX_CHILDREN_OPENCV数字1000
OPENCV_TRACE_MAX_CHILDREN数字1000
OPENCV_TRACE_SYNC_OPENCL布尔值等待 OpenCL 内核完成
OPENCV_TRACE_ITT_ENABLE布尔值
OPENCV_TRACE_ITT_PARENT布尔值为 ITT 任务设置 parentID
OPENCV_TRACE_ITT_SET_THREAD_NAME布尔值为 OpenCV 的线程设置名称“OpenCVThread-%03d”
链接:
缓存

注意:默认 tmp 位置为 (Windows);、 、 (其他)TMPDIR%$XDG_CACHE_HOME$HOME/.cache/var/tmp/tmp

名字类型违约描述
OPENCV_CACHE_SHOW_CLEANUP_MESSAGE布尔值显示缓存清理消息
OPENCV_DOWNLOAD_CACHE_DIR路径默认 TMP 位置下载文件的缓存目录(子目录downloads)
OPENCV_DNN_IE_GPU_CACHE_DIR路径默认 TMP 位置OpenVINO OpenCL 内核的缓存目录(子目录dnn_ie_cache_${device})
OPENCV_OPENCL_CACHE_DIR路径默认 TMP 位置OpenCL 内核缓存的缓存目录(子目录opencl_cache)

dnn的

注意:在下表中,第一个参数是内部网络 ID,第二个参数是转储级别。dump_base_nameocv_dnn_net_%05d_%02d

名字类型违约描述
OPENCV_DNN_BACKEND_DEFAULT数字3 (OpenCV)设置默认 DNN 后端,有关后端枚举,请参阅 dnn.hpp
OPENCV_DNN_NETWORK_DUMP数字0信息转储级别,0 - 无转储(默认文件名)${dump_base_name}.dot)
OPENCV_DNN_DISABLE_MEMORY_OPTIMIZATIONS布尔值
OPENCV_DNN_CHECK_NAN_INF布尔值检查层输出中的 NaN
OPENCV_DNN_CHECK_NAN_INF_DUMP布尔值NaN 检查失败时打印图层数据
OPENCV_DNN_CHECK_NAN_INF_RAISE_ERROR布尔值当 NaN 检查失败时也会引发异常
OPENCV_DNN_ONNX_USE_LEGACY_NAMES布尔值按原样使用 ONNX 节点名称,而不是“onnx_node!${node_name}”
OPENCV_DNN_CUSTOM_ONNX_TYPE_INCLUDE_DOMAIN_NAME布尔值将图层属性域预置到图层类型 (“domain.type”)
OPENCV_VULKAN_RUNTIME文件路径为 DNN Vulkan 后端设置 Vulkan 运行时库的位置
OPENCV_DNN_IE_SERIALIZE布尔值转储中间OpenVINO图(默认文件名,${dump_base_name}_ngraph.xml${dump_base_name}_ngraph.bin)
OPENCV_DNN_IE_EXTRA_PLUGIN_PATH路径通往额外 OpenVINO 插件的路径
OPENCV_DNN_IE_VPU_TYPE字符串强制使用特定的 OpenVINO VPU 设备类型(“Myriad2”或“MyriadX”)
OPENCV_TEST_DNN_IE_VPU_TYPE字符串与OPENCV_DNN_IE_VPU_TYPE相同,但用于测试
OPENCV_DNN_INFERENCE_ENGINE_HOLD_PLUGINS布尔值始终保留一个现有的 OpenVINO 实例,以避免在卸载时崩溃
OPENCV_DNN_INFERENCE_ENGINE_CORE_LIFETIME_WORKAROUND布尔值true (Windows)、false(其他)另一个OpenVINO生命周期解决方法
OPENCV_DNN_OPENCL_ALLOW_ALL_DEVICES布尔值允许在 CPU 设备上运行,允许在非 Intel 设备上运行 FP16
OPENCV_OCL4DNN_CONVOLUTION_IGNORE_INPUT_DIMS_4_CHECK布尔值OpenCL 后端的解决方法,请参阅?https://github.com/opencv/opencv/issues/20833
OPENCV_OCL4DNN_WORKAROUND_IDLF布尔值OpenCL 后端的另一种解决方法
OPENCV_OCL4DNN_CONFIG_PATH路径用于自动调优的内核配置缓存的路径(必须是现有目录),设置此变量以启用自动调优
OPENCV_OCL4DNN_DISABLE_AUTO_TUNING布尔值禁用自动调整
OPENCV_OCL4DNN_FORCE_AUTO_TUNING布尔值强制自动调整
OPENCV_OCL4DNN_TEST_ALL_KERNELS数字0测试卷积核,迭代次数(自动调优)
OPENCV_OCL4DNN_DUMP_FAILED_RESULT布尔值转储有关错误的额外信息(自动调整)
OPENCV_OCL4DNN_TUNING_RAISE_CHECK_ERROR布尔值出现错误时引发异常(自动调整)

测试

名字类型违约描述
? OPENCV_TEST_DATA_PATH目录路径设置测试数据搜索位置(例如/home/user/opencv_extra/testdata)
? OPENCV_DNN_TEST_DATA_PATH目录路径$OPENCV_TEST_DATA_PATH/dnn设置测试的 DNN 模型搜索位置(由 DNNGAPIOBJDETECTVIDEO?模块使用)
OPENCV_OPEN_MODEL_ZOO_DATA_PATH目录路径$OPENCV_DNN_TEST_DATA_PATH/omz_intel_models设置测试的OpenVINO模型搜索位置(由dnngapi模块使用)
INTEL_CVSDK_DIR一些?dnn?测试也可以在此处搜索 OpenVINO 模型
OPENCV_TEST_DEBUG数字0测试的调试级别,与(0 - 无调试(默认)、1 - 基本测试调试信息、>1 - 额外调试信息)相同--test_debug
OPENCV_TEST_REQUIRE_DATA布尔值与选项相同(在缺少非必需的测试数据而不是跳过时失败)--test_require_data
OPENCV_TEST_CHECK_OPTIONAL_DATA布尔值未找到可选数据时置位
OPENCV_IPP_CHECK布尔值和 的默认值--test_ipp_check--perf_ipp_check
OPENCV_PERF_VALIDATION_DIR目录路径读取/写入的文件的位置--perf_read_validation_results/--perf_write_validation_results
? OPENCV_PYTEST_FILTER字符串 (glob)Python 测试的测试筛选器
链接:

视频IO

注意:额外的 FFmpeg 选项应该以 的形式进行 pased ,例如 或key;value|key;value|key;valuehwaccel;cuvid|video_codec;h264_cuvid|vsync;0vcodec;x264|vprofile;high|vlevel;4.0

名字类型违约描述
? OPENCV_FFMPEG_CAPTURE_OPTIONS字符串(请参阅注释)VideoCapture FFmpeg 后端的额外选项
? OPENCV_FFMPEG_WRITER_OPTIONS字符串(请参阅注释)VideoWriter FFmpeg后端的额外选项
OPENCV_FFMPEG_THREADS数字设置 FFmpeg 线程数
OPENCV_FFMPEG_DEBUG非 null启用来自 FFmpeg 的日志记录消息
OPENCV_FFMPEG_LOGLEVEL数字设置 FFmpeg 日志记录级别
OPENCV_FFMPEG_DLL_DIR目录路径带有 FFmpeg 插件的目录(旧版)
OPENCV_FFMPEG_IS_THREAD_SAFE布尔值启用此选项将关闭 FFmpeg 后端中的线程安全锁(仅当您确定 FFmpeg 是使用线程支持构建的,并在 Linux 上测试时才使用)
OPENCV_FFMPEG_READ_ATTEMPTS数字4096读取过程失败前的失败尝试次数av_read_frame
OPENCV_FFMPEG_DECODE_ATTEMPTS数字64解码过程失败前的失败尝试次数avcodec_receive_frame
OPENCV_VIDEOIO_GSTREAMER_CALL_DEINIT布尔值在端关闭 GStreamer 实例
OPENCV_VIDEOIO_GSTREAMER_START_MAINLOOP布尔值在单独的线程中启动 GStreamer 循环
OPENCV_VIDEOIO_MFX_IMPL数字设置特定的 MFX 实现(请参阅 MFX 文档以获取枚举)
OPENCV_VIDEOIO_MFX_EXTRA_SURFACE_NUM数字1向 Surface 池添加额外的表面
OPENCV_VIDEOIO_MFX_POOL_TIMEOUT数字1等待池中空闲表面的超时(以秒为单位)
OPENCV_VIDEOIO_MFX_BITRATE_DIVISOR数字300此选项允许调整编码比特率(视频质量/大小)
OPENCV_VIDEOIO_MFX_WRITER_TIMEOUT数字1编码操作超时(以秒为单位)
OPENCV_VIDEOIO_MSMF_ENABLE_HW_TRANSFORMS布尔值允许在 MediaFoundation 处理图中进行硬件加速转换 (DXVA) (可能会减慢相机探测过程)
OPENCV_DSHOW_DEBUG非 null在 DShow 后端启用详细日志记录
OPENCV_DSHOW_SAVEGRAPH_FILENAME文件路径在DSshow后台启用处理图tump
OPENCV_VIDEOIO_V4L_RANGE_NORMALIZED布尔值属性 (V4L) 的 (0, 1) 范围
OPENCV_VIDEOIO_V4L_SELECT_TIMEOUT数字10选择调用超时(以秒为单位)(V4L)
OPENCV_VIDEOCAPTURE_DEBUG布尔值为 VideoCapture 启用调试消息
OPENCV_VIDEOWRITER_DEBUG布尔值为 VideoWriter 启用调试消息
? OPENCV_VIDEOIO_DEBUG布尔值VideoCapture 和 VideoWriter 的调试消息
VideoIO测试
名字类型违约描述
OPENCV_TEST_VIDEOIO_BACKEND_REQUIRE_FFMPEG如果没有可用的 FFmpeg 后端,测试应用程序将退出
OPENCV_TEST_V4L2_VIVID_DEVICE文件路径用于 V4L2 测试的 VIVID 虚拟摄像头设备的路径(例如/dev/video5)
OPENCV_TEST_PERF_CAMERA_LIST路径用于性能测试(waitAny_V4L测试)的相机
OPENCV_TEST_CAMERA_d_FPS数字为第 N 台相机设置的 fps(从 0 开始的索引)(waitAny_V4L测试)

加皮

名字类型违约描述
? GRAPH_DUMP_PATH文件路径转储图(点格式)
PIPELINE_MODELS_PATH目录路径pipeline_modeling_tool示例应用程序使用此 var
OPENCV_GAPI_INFERENCE_ENGINE_CORE_LIFETIME_WORKAROUND布尔值true(Windows、Apple)、false(其他)与OPENCV_DNN_INFERENCE_ENGINE_CORE_LIFETIME_WORKAROUND相似
GAPI测试/样品
名字类型违约描述
PLAIDML_DEVICE字符串特定于 PlaidML 后端测试
PLAIDML_TARGET字符串特定于 PlaidML 后端测试
OPENCV_GAPI_ONNX_MODEL_PATH目录路径ONNX 模型测试的搜索位置
OPENCV_TEST_FREETYPE_FONT_PATH文件路径其中一个测试的 TrueType 字体的位置
链接:

高桂

名字类型违约描述
OPENCV_LEGACY_WAITKEY非 null开关返回结果(默认行为:(或-1),传统行为:waitKeyreturn code & 0xffreturn code)
$XDG_RUNTIME_DIR特定于 Wayland 后端 - 为进程间通信创建共享内存映射文件(名为opencv-shared-??????)

imgproc的

名字类型违约描述
OPENCV_OPENCL_IMGPROC_MORPH_SPECIAL_KERNEL布尔值true (Apple)、false (其他)对小型变形内核使用特殊的 OpenCL 内核(Intel 设备)
OPENCV_GAUSSIANBLUR_CHECK_BITEXACT_KERNELS布尔值运行前验证高斯内核(src 为 CV_16U,位精确版本)

img编解码器

名字类型违约描述
OPENCV_IMGCODECS_AVIF_MAX_FILE_SIZE数字64兆字节(MB)限制输入 AVIF 大小
OPENCV_IMGCODECS_WEBP_MAX_FILE_SIZE数字64兆字节(MB)限制输入 WEBM 大小
OPENCV_IO_MAX_IMAGE_PARAMS数字50限制 imwrite 和 imencode 中允许的最大参数数
OPENCV_IO_MAX_IMAGE_WIDTH数字1 << 20,限制输入图像大小以避免大量内存分配
OPENCV_IO_MAX_IMAGE_HEIGHT数字1 << 20
OPENCV_IO_MAX_IMAGE_PIXELS数字1 << 30
OPENCV_IO_ENABLE_OPENEXR布尔值true(设置构建选项OPENCV_IO_FORCE_OPENEXR或使用外部 OpenEXR)、false(否则)启用 OpenEXR 后端
OPENCV_IO_ENABLE_JASPER布尔值true(设置生成选项 OPENCV_IO_FORCE_JASPER)、false(否则)启用 Jasper 后端
文章来源:https://blog.csdn.net/2301_81888214/article/details/135459936
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。