opencv (c++) VideoCapture无法打开视频

2023-10-31 02:20

本文主要是介绍opencv (c++) VideoCapture无法打开视频,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个是测试代码

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
int main(int argc, char** argv){string fv=string(argv[1]);cv::VideoCapture cap(fv);cv::Mat img;cap>>img;cout<<img.size()<<endl;if(!cap.isOpened()){cout<<"why not open??"<<endl;exit(0);}return 0;
}

总是输出

[0 x 0]
why not open??

解决过程

这个问题之前遇到过,估计是lib库没链接好,但是这次怎么都弄不对,才想到 opencv 读取视频这里依赖ffmpeg,于是开始排查 opencv 编译这里,最终写上了依赖 FFMPEG的版本

cmake -D CMAKE_BUILD_TYPE=Release \-D CMAKE_INSTALL_PREFIX=$prefix\-D FFMPEG=ON \-D WITH_OPENCL=ON \-D USE_O3=ON \-D ENABLE_CXX11=ON \-D WITH_TBB=ON \-D WITH_IPP=ON \-D WITH_OPENMP=ON \-D WITH_WEBP=OFF \-D BUILD_TIFF=ON \-D ENABLE_FAST_MATH=ON \-D BUILD_EXAMPLES=OFF \-D BUILD_DOCS=OFF \-D BUILD_PERF_TESTS=OFF \-D BUILD_TESTS=OFF ..

但是又遇到了问题,就是FFMEPG 这里总是 NO
在这里插入图片描述
经过资料搜索,发现需要配置 confg,改成

export PKG_CONFIG_PATH="bin/ffmpeg_opt/lib/pkgconfig:bin/x264_opt/lib/pkgconfig:$PKG_CONFIG_PATH"cmake ... (之前的哪些)

但是仍然出现 NO,于是打算重新编译 FFMPEG

export PKG_CONFIG_PATH="bin/x264_opt/lib/pkgconfig/:$PKG_CONFIG_PATH"
../configure --prefix=$DIR/ffmpeg_opt --enable-shared --enable-static \--extra-cflags=' -pipe -O3 -fPIC' \--extra-cxxflags=' -pipe -O3 -fPIC'\--enable-pthreads --enable-zlib --enable-pic --enable-pthreads \--enable-gpl --enable-version3 --enable-hardcoded-tables --enable-libfreetype \--enable-optimizations --disable-doc  \--enable-libx264 --enable-avresamplemake -j
make install

这里疑惑点是可能 --enable-avresample 是必须的

随后编译 opencv,这下config没问题了,但是make的时候报了错
在这里插入图片描述
这个其实很简单,make的时候设置 LD_LIBRARY_PATH就行

这篇关于opencv (c++) VideoCapture无法打开视频的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/312145

相关文章

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

C++作用域和标识符查找规则详解

《C++作用域和标识符查找规则详解》在C++中,作用域(Scope)和标识符查找(IdentifierLookup)是理解代码行为的重要概念,本文将详细介绍这些规则,并通过实例来说明它们的工作原理,需... 目录作用域标识符查找规则1. 普通查找(Ordinary Lookup)2. 限定查找(Qualif

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++中OpenCV 矩阵运算的实现

《C/C++中OpenCV矩阵运算的实现》本文主要介绍了C/C++中OpenCV矩阵运算的实现,包括基本算术运算(标量与矩阵)、矩阵乘法、转置、逆矩阵、行列式、迹、范数等操作,感兴趣的可以了解一下... 目录矩阵的创建与初始化创建矩阵访问矩阵元素基本的算术运算 ➕➖✖️➗矩阵与标量运算矩阵与矩阵运算 (逐元