环境:win10+opencv4.5.3+opencv_contrib-4.5.3+vs2019
状态:禁用笔记本自带摄像头,使用webcam

问题

配置好opencv和contrib库后,通过opencv打开webcam,发现无论debug还是release编译起图非常慢,而且有一些fail的提示。

#include <opencv2/opencv.hpp>
#include <iostream>using namespace std;
using namespace cv;int main(int, char**)
{int cameraIndex = 0;// 实例化VideoCapture camera;camera.open(cameraIndex);    // 打开摄像头, 默认摄像头cameraIndex=0if (!camera.isOpened()){cerr << "Couldn't open camera." << endl;}// 循环读取视频帧while (true){cv::Mat frame;camera >> frame;cv::imshow("camera", frame);if (cv::waitKey(33) == 27) break;   // ESC 键退出}// 释放camera.release();cv::destroyWindow("camera");return 0;
}

debug运行后出现如下提示:

[ INFO:0] global C:\opencv\opencv-4.5.3\modules\videoio\src\videoio_registry.cpp (217) cv::`anonymous-namespace'::VideoB
ackendRegistry::VideoBackendRegistry VIDEOIO: Enabled backends(8, sorted by priority): FFMPEG(1000); GSTREAMER(990); INT
EL_MFX(980); MSMF(970); DSHOW(960); CV_IMAGES(950); CV_MJPEG(940); UEYE(930)
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\videoio\src\backend_plugin.cpp (380) cv::impl::getPluginCandidates Found2 plugin(s) for GSTREAMER
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib:
:libraryLoad load C:\opencv\build\install\x64\vc16\bin\opencv_videoio_gstreamer453_64d.dll => FAILED
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib:
:libraryLoad load opencv_videoio_gstreamer453_64d.dll => FAILED
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\videoio\src\cap_msmf.cpp (788) CvCapture_MSMF::configureHW MSMF: Using D
3D11 video acceleration on GPU device: Intel(R) Iris(R) Xe Graphics

然后会卡在这里等将近1分钟时间才能开启摄像头,之后出现n多信息:

...
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\core\src\parallel\registry_parallel.impl.hpp (96) cv::parallel::Parallel
BackendRegistry::ParallelBackendRegistry core(parallel): Enabled backends(3, sorted by priority): ONETBB(1000); TBB(990)
; OPENMP(980)
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib:
:libraryLoad load C:\opencv\build\install\x64\vc16\bin\opencv_core_parallel_onetbb453_64d.dll => FAILED
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib:
:libraryLoad load opencv_core_parallel_onetbb453_64d.dll => FAILED
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib:
:libraryLoad load C:\opencv\build\install\x64\vc16\bin\opencv_core_parallel_tbb453_64d.dll => FAILED
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib:
:libraryLoad load opencv_core_parallel_tbb453_64d.dll => FAILED
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib:
:libraryLoad load C:\opencv\build\install\x64\vc16\bin\opencv_core_parallel_openmp453_64d.dll => FAILED
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib:
:libraryLoad load opencv_core_parallel_openmp453_64d.dll => FAILED
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\highgui\src\registry.impl.hpp (114) cv::highgui_backend::UIBackendRegist
ry::UIBackendRegistry UI: Enabled backends(4, sorted by priority): GTK(1000); GTK3(990); GTK2(980); WIN32(970) + BUILTIN
(WIN32UI)
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib:
:libraryLoad load C:\opencv\build\install\x64\vc16\bin\opencv_highgui_gtk453_64.dll => FAILED
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib:
:libraryLoad load opencv_highgui_gtk453_64.dll => FAILED
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib:
:libraryLoad load C:\opencv\build\install\x64\vc16\bin\opencv_highgui_gtk3453_64.dll => FAILED
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib:
:libraryLoad load opencv_highgui_gtk3453_64.dll => FAILED
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib:
:libraryLoad load C:\opencv\build\install\x64\vc16\bin\opencv_highgui_gtk2453_64.dll => FAILED
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib:
:libraryLoad load opencv_highgui_gtk2453_64.dll => FAILED
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\highgui\src\backend.cpp (90) cv::highgui_backend::createUIBackend UI: us
ing backend: WIN32 (priority=970)
[ INFO:0] global C:\opencv\opencv-4.5.3\modules\highgui\src\window_w32.cpp (3009) cv::impl::Win32BackendUI::createWindowOpenCV/UI: Creating Win32UI window: camera (1)

使用release编译也是一样的问题,只不过release在窗口不显示INFO提示。

分析

  1. 既然可以起图,那应该是期间启用后端I/O接口的时候,造成了延误或者中断。通过查看debug的日志,可以看到好多FAILED的项目。
    VIDEOIO: Enabled backends(8, sorted by priority): FFMPEG(1000)
    load opencv_videoio_gstreamer453_64d.dll => FAILED
    load opencv_core_parallel_onetbb453_64d.dll => FAILED
    load opencv_core_parallel_tbb453_64d.dll => FAILED
    load opencv_core_parallel_openmp453_64d.dll => FAILED
    load opencv_highgui_gtk453_64.dll => FAILED

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。
GStreamer 是用来构建流媒体应用的开源多媒体框架(framework),其目标是要简化音/视频应用程序的开发,已经能够被用来处理像 MP3、Ogg、MPEG1、MPEG2、AVI、Quicktime 等多种格式的多媒体数据。
oneAPI Threading Building Blocks,原名Threading Building Blocks,是英特尔开发的用于多核处理器上并行编程的C++模板库。 使用 TBB,计算被分解为可以并行运行的任务。 库管理和调度线程来执行这些任务。
OpenMP是由OpenMP Architecture Review Board牵头提出的,并已被广泛接受,用于共享内存并行系统的多处理器程序设计的一套指导性编译处理方案(Compiler Directive) 。
GTK+(GIMP Toolkit)是一套源码以LGPL许可协议分发、跨平台的图形工具包。最初是为GIMP写的,已成为一个功能强大、设计灵活的一个通用图形库,是GNU/Linux下开发图形界面的应用程序的主流开发工具之一。

最后使用的是:
UI: using backend: WIN32 (priority=970)

看起来好像就是打开webcam时,在找一个合适的接口的时候,浪费了时间,比较慢。

opencv video i/o 的介绍:

opencv有许多I/O API,详见:cv::VideoCaptureAPIs

    VideoCapture camera;camera.open(cameraIndex);    // 打开摄像头, 默认摄像头cameraIndex=0,默认后端CAP_ANY

如果在开始的时候,不指定API,OpenCV 会自动选择并使用第一个可用的后端 ( )。apiPreference=cv::CAP_ANY,猜测自动选取的过程造成了延迟。

解决

我们可以选择要在运行时使用的后端。例如,使用 Direct Show 作为后端从默认相机中抓取。

//declare a capture object
cv::VideoCapture cap(0, cv::CAP_DSHOW);
//or specify the apiPreference with open
cap.open(0, cv::CAP_DSHOW);

这样起图就快了。

load opencv videoio gstreamer453 64d dll failed 打开摄像头慢相关推荐

  1. Qt与OpenCV编程:在子线程打开摄像头用主线程显示

    前言 1.在做图像处理开发中,比例做目标跟踪识别的时候,用OpenCV一直在处理摄像头传入的数据,有时候会出现界面卡死或者未响应的状态,这是因为事件循环一直等待处理函数的返回而导致阻塞事件循环,这样一 ...

  2. Ubuntu系统下安装opencv3.x并打开图片和视频文件以及打开摄像头录制视频

    目录 一.安装opencv 1.前置安装条件 2.安装环境 3.下载opencv3.4.11 4.解压安装包 5.开始安装 6.检查是否安装成功 二.显示图片和播放视频 1.显示图片 2.播放视频 三 ...

  3. java opencv 打开摄像头截取图片

    先到官网下载 https://opencv.org/releases/ 我的是windows 版 下载好后打开自动解压,opencv文件夹,打开里面的build\java,将opencv-460.ja ...

  4. Opencv(C++)笔记--打开摄像头、保存摄像头视频

    1--打开摄像头 关键代码语句: ① VideoCapture cam(0); ② cam.read(img); ③ imshow("cam", img); # include&l ...

  5. OpenCv打开摄像头失败问题处理cap_msmf.cpp (677) MFVideoFormat_RGB24(codec not found)

    python opencv 打开摄像头,服务器挂掉重新启动问题 下面是代码 importing the required modules import cv2 import numpy as np c ...

  6. Mac 通过openCV打开摄像头权限

    1.登录网址:Installing OpenCV for Java - OpenCV Java Tutorials 1.0 documentation 可以看到这个界面,翻译一下就可以: 我们先打开终 ...

  7. Windbg MESC.dll 加载问题 The call to LoadLibrary(winext/MSEC.dll) failed, Win32 error 0n126

    在使用windbg MSEC插件时 ,有时会有插件加载失败的情况,具体错误如下: !load C:\windbg\MSEC.dll The call to LoadLibrary(C:\windbg\ ...

  8. Linux操作opencv库打开摄像头

    1.此操作要确保opencv已经成功安装在Linux上 查看opencv版本: pkg-config --modversion opencv 我的版本是:3.4.13 Linux安装 openCV3. ...

  9. Mac macOS 10.14 Mojave Xcode OpenCV 无法打开摄像头,调用摄像头权限错误

    Mac macOS 10.14 Mojave Xcode opencv 调用摄像头权限错误 This app has crashed because it attempted to access pr ...

最新文章

  1. 关于ASP.NET MVC的一些工作中遇到的问题
  2. 6、Power View—条形图的应用
  3. STM32 IO口的八种模式使用小结
  4. 让知识与经验成为你宝贵的财富
  5. 矩阵的对数运算公式_必修一——对数与对数运算
  6. 了解git的命令行使用
  7. 机器学习8-集成学习
  8. iperf3 网络探测详解(android、iOS、windows)
  9. 现在大火的Web3是什么 web1 web2
  10. phpmyadmin创建账号授权指定表
  11. 全网首发:gstreamer中正确使用avdec_h264插件
  12. python编写性别比例失衡_性别比例失衡加剧什么情况?什么原因导致这样的结果?...
  13. PS2有线手柄的SPI协议
  14. grep的常用和次常用选项
  15. NK细胞治疗肿瘤相关进展概述
  16. EXCEL中去掉单元格首尾空格,保留字符串中间空格
  17. 【一本通】1064:奥运奖牌计数
  18. 放大电路基本性能指标
  19. Linux命令和实例大全
  20. 今天自制的NTP服务器正式部署在生产环境了,做个简单的总结记录一下

热门文章

  1. 带2nd的计算机软件,2nd在计算器中是什么意思
  2. [减肥] 能令你发胖的十大真凶
  3. 雅虎邮箱停用对网民的影响
  4. 腾讯课堂在线视频下载
  5. 南京理工大学电子与通信工程考研上岸经验分享
  6. 科普文章:公众电磁辐射与防护的研究
  7. 震撼!世界从10亿光年到0.1飞米!
  8. 英雄杀-如何通关挑战
  9. 建立自己的封装库(一)
  10. VBA日期校验(年月日,年月,年)