win11 vs2022 opencv 4.10 camshift示例程序运行

记录win11 vs2022 opencv 4.10下 camshift等示例程序的单步debug启动方式,方便了解源码。

  1. debug版本编译通过,但运行时报出大量日志信息(部分dll加载FAILED后会自动找兼容dll)。但也能继续运行,效果如下
    在这里插入图片描述

  2. release版本可以直接运行,help信息如下
    这种自描述的help信息挺好的,一开始猜测使用lena.jpg明显无法运行。
    在这里插入图片描述

  3. 下载 https://www.bogotobogo.com/python/OpenCV_Python/images/mean_shift_tracking/slow_traffic_small.mp4 后,放在C:/code/opencv/samples/data/slow_traffic_small.mp4

  4. 运行example_tutorial_camshift.exe C:/code/opencv/samples/data/slow_traffic_small.mp4的效果如下
    在这里插入图片描述

  5. debug版本输出信息主要是日志,解释如下:

C:\code\opencv\build\x64\bin\Debug>example_tutorial_camshift.exe C:/code/opencv/samples/data/slow_traffic_small.mp4
[ INFO:0@0.003] global videoio_registry.cpp:244 cv::`anonymous-namespace'::VideoBackendRegistry::VideoBackendRegistry VIDEOIO: Enabled backends(9, sorted by priority): FFMPEG(1000); GSTREAMER(990); INTEL_MFX(980); MSMF(970); DSHOW(960); CV_IMAGES(950); CV_MJPEG(940); UEYE(930); OBSENSOR(920)
[ INFO:0@0.003] global backend_plugin.cpp:383 cv::impl::getPluginCandidates Found 3 plugin(s) for FFMPEG
[ INFO:0@0.004] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load C:\code\opencv\build\x64\bin\Debug\opencv_videoio_ffmpeg4100_64d.dll => FAILED
[ INFO:0@0.005] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_videoio_ffmpeg4100_64d.dll => FAILED
[ INFO:0@0.007] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_videoio_ffmpeg4100_64.dll => OK
[ INFO:0@0.007] global backend_plugin.cpp:50 cv::impl::PluginBackend::initCaptureAPI Found entry: 'opencv_videoio_capture_plugin_init_v1'
[ INFO:0@0.008] global backend_plugin.cpp:169 cv::impl::PluginBackend::checkCompatibility Video I/O: initialized 'FFmpeg OpenCV Video I/O Capture plugin': built with OpenCV 4.10 (ABI/API = 1/1), current OpenCV version is '4.10.0' (ABI/API = 1/1)
[ INFO:0@0.008] global backend_plugin.cpp:69 cv::impl::PluginBackend::initCaptureAPI Video I/O: plugin is ready to use 'FFmpeg OpenCV Video I/O Capture plugin'
[ INFO:0@0.008] global backend_plugin.cpp:84 cv::impl::PluginBackend::initWriterAPI Found entry: 'opencv_videoio_writer_plugin_init_v1'
[ INFO:0@0.008] global backend_plugin.cpp:169 cv::impl::PluginBackend::checkCompatibility Video I/O: initialized 'FFmpeg OpenCV Video I/O Writer plugin': built with OpenCV 4.10 (ABI/API = 1/1), current OpenCV version is '4.10.0' (ABI/API = 1/1)
[ INFO:0@0.008] global backend_plugin.cpp:103 cv::impl::PluginBackend::initWriterAPI Video I/O: plugin is ready to use 'FFmpeg OpenCV Video I/O Writer plugin'
[ INFO:0@0.072] global registry_parallel.impl.hpp:96 cv::parallel::ParallelBackendRegistry::ParallelBackendRegistry core(parallel): Enabled backends(3, sorted by priority): ONETBB(1000); TBB(990); OPENMP(980)
[ INFO:0@0.073] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load C:\code\opencv\build\x64\bin\Debug\opencv_core_parallel_onetbb4100_64d.dll => FAILED
[ INFO:0@0.075] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_core_parallel_onetbb4100_64d.dll => FAILED
[ INFO:0@0.075] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load C:\code\opencv\build\x64\bin\Debug\opencv_core_parallel_tbb4100_64d.dll => FAILED
[ INFO:0@0.077] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_core_parallel_tbb4100_64d.dll => FAILED
[ INFO:0@0.077] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load C:\code\opencv\build\x64\bin\Debug\opencv_core_parallel_openmp4100_64d.dll => FAILED
[ INFO:0@0.078] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_core_parallel_openmp4100_64d.dll => FAILED
[ INFO:0@0.088] global registry.impl.hpp:114 cv::highgui_backend::UIBackendRegistry::UIBackendRegistry UI: Enabled backends(4, sorted by priority): GTK(1000); GTK3(990); GTK2(980); WIN32(970) + BUILTIN(WIN32UI)
[ INFO:0@0.088] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load C:\code\opencv\build\x64\bin\Debug\opencv_highgui_gtk4100_64.dll => FAILED
[ INFO:0@0.090] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_highgui_gtk4100_64.dll => FAILED
[ INFO:0@0.090] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load C:\code\opencv\build\x64\bin\Debug\opencv_highgui_gtk34100_64.dll => FAILED
[ INFO:0@0.091] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_highgui_gtk34100_64.dll => FAILED
[ INFO:0@0.091] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load C:\code\opencv\build\x64\bin\Debug\opencv_highgui_gtk24100_64.dll => FAILED
[ INFO:0@0.093] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_highgui_gtk24100_64.dll => FAILED
[ INFO:0@0.094] global backend.cpp:90 cv::highgui_backend::createUIBackend UI: using backend: WIN32 (priority=970)
[ INFO:0@0.094] global window_w32.cpp:2993 cv::impl::Win32BackendUI::createWindow OpenCV/UI: Creating Win32UI window: img2 (1)
[ INFO:1@45.156] global plugin_loader.impl.hpp:74 cv::plugin::impl::DynamicLib::libraryRelease unload opencv_videoio_ffmpeg4100_64.dll

从错误信息的分析来看,Debug版本中的信息输出是OpenCV库在Debug模式下为开发者提供的详细日志。这些日志帮助开发者了解模块加载过程,特别是动态库加载、插件初始化以及后端选择的情况。

错误信息分析

以下是详细解读:

1. 视频 I/O 后端初始化
[ INFO:0@0.003] global videoio_registry.cpp:244 cv::`anonymous-namespace'::VideoBackendRegistry::VideoBackendRegistry VIDEOIO: Enabled backends...
  • OpenCV支持多种视频I/O后端(如FFMPEG、GStreamer等),这些后端按优先级排序。
  • 日志表示OpenCV在尝试加载这些后端插件,并会选择最优的后端。
2. FFMPEG动态库加载
[ INFO:0@0.004] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load C:\code\opencv\build\x64\bin\Debug\opencv_videoio_ffmpeg4100_64d.dll => FAILED
  • OpenCV在尝试加载动态库 opencv_videoio_ffmpeg4100_64d.dll 失败。
  • 随后尝试加载非Debug版本的库 opencv_videoio_ffmpeg4100_64.dll 成功:
    [ INFO:0@0.007] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_videoio_ffmpeg4100_64.dll => OK
    
  • 这是因为Debug模式下需要Debug版本的动态库(通常以d结尾),但该库可能未正确构建或路径未配置。加载失败后,OpenCV默认回退到Release库。
3. 并行计算后端
[ INFO:0@0.073] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load C:\code\opencv\build\x64\bin\Debug\opencv_core_parallel_onetbb4100_64d.dll => FAILED
  • 类似于FFMPEG动态库,OpenCV尝试加载并行计算的动态库(如ONETBB、TBB等)均失败。
  • 即使加载失败,也不会影响运行,因为OpenCV可能会选择备用实现(如单线程)。
4. UI 后端初始化
[ INFO:0@0.088] global registry.impl.hpp:114 cv::highgui_backend::UIBackendRegistry::UIBackendRegistry UI: Enabled backends...
  • OpenCV支持多种UI后端(如GTK、WIN32等)。在日志中,尝试加载GTK相关的动态库均失败:
    [ INFO:0@0.093] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_highgui_gtk24100_64.dll => FAILED
    
  • 最终选择了WIN32作为后端:
    [ INFO:0@0.094] global backend.cpp:90 cv::highgui_backend::createUIBackend UI: using backend: WIN32 (priority=970)
    

为什么这些信息不会影响运行?

  1. 插件加载机制具有容错性

    • OpenCV在尝试加载动态库失败后,会回退到其他可用的库或默认实现(如Release版本的FFMPEG库)。
  2. 运行时依赖检查

    • 如果没有找到适合的插件,OpenCV仍会使用内置的基本实现(如单线程计算)。
  3. 日志仅用于Debug模式

    • Debug版本输出的这些日志旨在帮助开发者调试,Release版本中不会显示这些信息,因为动态库加载已被优化。

如何改进?

  1. 确保Debug动态库可用

    • 确认 opencv_videoio_ffmpeg4100_64d.dll 和其他带d的库是否存在。如果缺失,可以尝试重新编译OpenCV的Debug版本。
  2. 调整路径配置

    • 检查环境变量 PATH 或使用 set 命令,确保Debug版本库的路径已正确配置。
  3. 避免干扰正常输出

    • 可以在Debug模式下通过设置日志级别减少不必要的日志输出:
      cv::utils::logging::setLogLevel(cv::utils::logging::LOG_LEVEL_WARNING);
      

总结

上述错误信息显示的是Debug模式下的详细加载日志,而非运行时错误。只要最终动态库加载成功(如Release库被使用),程序功能不会受到影响。优化路径配置和动态库编译可以消除这些无意义的失败信息,从而简化调试过程。

  1. release版本的调试,设置3处:
    “链接器”->“调试”->“生成调试信息”,设置为“是(/DEBUG)”。
    “C/C++”->“优化”,设置为“禁止(/Od)”
    “C/C++”->“常规”->“调试信息格式”,设置为“程序数据库(/Zi)”

  2. debug/release版本设置命令参数后启动调试
    debug/release版本调试效果类似。
    在这里插入图片描述

  3. opencv的部分python例程可以右键直接运行,有些不行的,估计是环境缺失,例如测试文件缺失、参数不全之类的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/499197.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

赛博周刊·2024年度工具精选(图片资源类)

1、EmojiSpark emoji表情包查找工具。 2、fluentui-emoji 微软开源的Fluent Emoji表情包。 3、开源Emoji库 一个开源的emoji库,目前拥有4000个emoji表情。 4、中国表情包大合集博物馆 一个专门收集中国表情包的项目,已收录5712张表情包,并…

通过Cephadm工具搭建Ceph分布式存储以及通过文件系统形式进行挂载的步骤

1、什么是Ceph Ceph是一种开源、分布式存储系统,旨在提供卓越的性能、可靠性和可伸缩性。它是为了解决大规模数据存储问题而设计的,使得用户可以在无需特定硬件支持的前提下,通过普通的硬件设备来部署和管理存储解决方案。Ceph的灵活性和设计…

JVM对象创建过程

1 类加载检查 jvm通过new指令开始创建对象jvm执行new指令时,首先通过指令参数从常量池中取到需要创建的类名检查该类是否被加载,解析,和初始化过如果没有,则执行类的加载过程new指令对应到java语言具体的操作为 new 关键字创建对象…

逆向生成原理

逆向工程原理 前言逆向工程的原理1.Freemarker模板引擎2.逆向工程的原理 前言 在我们实际开发过程中,开发流程大体可以分为需求分析、数据库字段设计、然后再开始编码,然后就开始创建我们实体类、controller、service、serviceImpl、mapper,…

【Unity】 HTFramework框架(五十七)通过Tag、Layer批量搜索物体

更新日期:2024年12月30日。 Github源码:[点我获取源码] Gitee源码:[点我获取源码] 索引 问题再现通过Tag搜索物体(SearchByTag)打开SearchByTag窗口搜索标记指定Tag的所有物体批量修改Tag搜索Undefined状态的所有物体 …

JWT包中的源码分析【Golang】

前言 最近在学web编程的途中,经过学长提醒,在进行登陆(Login)操作之后,识别是否登陆的标识应该要放入authorization中,正好最近也在学鉴权,就顺便来看看源码了。 正文 1. 代码示例 在进行分…

鸿蒙应用开发(1)

可能以为通过 鸿蒙应用开发启航计划(点我去看上一节) 的内容,就足够了,其实还没有。 可是我还是要告诉你,你还需要学习新的语言 -- ArkTS。 ,ArkTS是HUAWEI开发的程序语言。你需要学习这门语言。这会花费你…

python爬虫--小白篇【selenium自动爬取文件】

一、问题描述 在学习或工作中需要爬取文件资源时,由于文件数量太多,手动单个下载文件效率低,操作麻烦,采用selenium框架自动爬取文件数据是不二选择。如需要爬取下面网站中包含的全部pdf文件,并将其转为Markdown格式。…

超大规模分类(一):噪声对比估计(Noise Contrastive Estimation, NCE)

NCE损失对应的论文为《A fast and simple algorithm for training neural probabilistic language models》,发表于2012年的ICML会议。 背景 在2012年,语言模型一般采用n-gram的方法,统计单词/上下文间的共现关系,比神经概率语言…

latex 尖括号怎么写 编译出来是问号

首先引入\usepackage{amsmath}使用\langle \range, 如下: These knowledge graphs represent real-world facts in the form of triples of \(\langle entity, relationship, entity \rangle \)编译展示出来如下:

永磁同步电机控制算法--最大转矩电流比控制(牛顿迭代法)

一、原理介绍 搭建了基于牛顿迭代法的MTPA双闭环矢量控制系统 二、仿真验证 在MATLAB/simulink里面验证所提算法,采用和实验中一致的控制周期1e-4,电机部分计算周期为1e-6。仿真模型如下所示: 对直接公式计算法和牛顿迭代法进行仿真对比验…

[Win32/ATL]_[初级]_[处理WM_PAINT消息注意事项]

场景 在开发Win32/WTL程序时,遇到了使用CFolderDialog(atldlgs.h)打不开目录选择对话框的情况。具体表现是执行了窗口的DoModal,却没有窗口弹出来。 可以确定执行操作是在主线程,并不是工作线程。调试时暂停看堆栈,知道到DoModal方法里的SHB…

华为配置 之 RIP

简介: RIP(路由信息协议)是一种广泛使用的内部网关协议,基于距离向量算法来决定路径。它通过向全网广播路由控制信息来动态交换网络拓扑信息,从而计算出最佳路由路径。RIP易于配置和理解,非常适用于小型网络…

RCE-PLUS (学习记录)

源码 <?php error_reporting(0); highlight_file(__FILE__); function strCheck($cmd) {if(!preg_match("/\;|\&|\\$|\x09|\x26|more|less|head|sort|tail|sed|cut|awk|strings|od|php|ping|flag/i", $cmd)){return($cmd);}else{die("i hate this"…

Unity Mesh生成Cube

1. 配置一个Cube的每个面的数据 一共是6个面&#xff0c;每个面包含的数据包括4个顶点的相对顶点坐标&#xff08;Cube的中心为原点&#xff09;&#xff0c;法线方向&#xff0c;UV坐标&#xff0c;顶点渲染顺序&#xff0c;以及这个面用到的材质&#xff0c;因为这里是Top&am…

【YOLO算法改进】ALSS-YOLO:无人机热红外图像|野生动物小目标检测

目录 论文信息 论文创新点 1.自适应轻量通道分割和洗牌&#xff08;ALSS&#xff09;模块 2.轻量坐标注意力&#xff08;LCA&#xff09;模块 3.单通道聚焦模块 4.FineSIOU损失函数 摘要 架构设计 轻量高效网络架构 - ALSS模块 LCA模块 单通道聚焦模块 损失函数优…

【亚马逊云】基于Amazon EC2实例部署 NextCloud 云网盘并使用 Docker-compose 搭建 ONLYOFFICE 企业在线办公应用软件

文章目录 1. 部署EC2实例2. 安装 Docker 服务3. 安装docker-compose4. 创建Docker-compose文件5. 创建nginx.conf文件6. 运行docker-compose命令开始部署7. 访问ONLYOFFICE插件8. 访问NextCloud云盘9. 下载并启用ONLYOFFICE插件10. 上传文件测试11. 所遇问题12. 参考链接 1. 部…

使用爬虫技术获取网页中的半结构化数据

目录 前言1. 半结构化数据与爬虫技术简介1.1 半结构化数据的定义与特性1.2 爬虫技术的基本原理 2. 爬取半结构化数据的实现过程2.1 明确目标与准备2.2 发送HTTP请求2.3 解析网页内容2.4 动态内容的处理2.5 数据存储与清洗 3. 技术挑战与应对策略3.1 处理反爬机制3.2 提高爬取效…

win10、win11-鼠标右键还原、暂停更新

系统优化 win 10jihuo win 11jihuo鼠标右键还原暂停更新 update 2024.12.28win 10 jihuo winx&#xff0c;打开powershell管理员&#xff0c;输入以下命令,选择1并等待 irm https://get.activated.win | iex参考&#xff1a;https://www.bilibili.com/video/BV1TN411M72J/?sp…

【蓝桥杯选拔赛真题87】python输出字符串 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析

目录 python输出字符串 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python输出字符串 第十五届蓝桥杯青少年组python比赛选拔赛真题详细解析…