opencv打开视频文件出错
使用C#调用mingw的so文件,在C++端使用opencv打开视频。这样的项目完成过了一个,第二次做的时候,发现opencv打开视频文件出错。
首先怀疑是opencv的opencv_ffmpeg2410.dll文件找不到,确认了文件位置仍然不行。
然后怀疑是新换的mingw32编译器问题,换回了老版本仍然不行。
最后确认了视频文件的存在性,传递文件名的正确性,一切正常,视频无法打开。
在试验过程中,出现了很多次segmentation fault的情况,发现是因为两个mingw32编译器和他们的运行时库冲突问题。当我切换了环境变量更换编译器时,由于VS2010不重启,环境变量就不更新,所以使用VS2010启动的程序还使用原来的运行时dll;在vim中编译时,不退出环境变量不更新,有时根本没有换编译器编译。而测试编译器时一般都是在新建的命令窗口中输入g++ --version,这样看到的结果都是对的。
为了确认程序引用的dll正确性,关闭了所有程序,删除了散乱的运行时dll,将PATH环境变量整理后,打开了之前项目里做的工程,结果之前的工程能够在两个版本编译器下正确运行,而且与so文件位置无关。此时问题定位在了新写的so库上。
将新的工程中so库的代码一点一点的注释,最后只剩下视频部分,仍然不能打开。再将老工程直接复制过来,接口与新的工程做成一样的,就是让新的C#程序调用老的so文件,结果能够成功打开,然后在老so基础上逐步修改,发现修改指令部分时就出错了,最后怀疑是视频文件名正确性,之前确认正确性的时候只是从日志文件中看到了文件名,在资源管理器中证明了正确性,但文件名中可能存在无法显示的字符,导致无法访问。所以在程序中加入了 slog.log(sFormat("%s,%d",url.c_str(),url.size()).c_str()); 输出文件名的长度为26个字符,而使用无法打开视频的代码,文件名长度为27字符,说明不对,多出来的是文件名前端的空格,修改命令解析部分,删除空格后,正确执行。
opencv打开视频文件出错的更多相关文章
- ffmpeg和opencv 播放视频文件和显示器
ffmpeg它是基于最新版本,在官网下载http://ffmpeg.zeranoe.com/builds/.编译时VS2010配置相关头文件及库的路径就可以.opencv的搭建參考上一个博客. 首先简 ...
- OpenCV读写视频文件解析(二)
OpenCV读写视频文件解析(二) VideoCapture::set 设置视频捕获中的属性. C++:bool VideoCapture::set(int propId, double value) ...
- OpenCV读写视频文件解析
OpenCV读写视频文件解析 一.视频读写类 视频处理的是运动图像,而不是静止图像.视频资源可以是一个专用摄像机.网络摄像头.视频文件或图像文件序列. 在 OpenCV 中,VideoCapture ...
- python实现调用摄像头或打开视频文件
目录: (一)调用摄像头或打开视频文件代码实现 (二)说明和补充 (一)调用摄像头或打开视频文件代码实现 1 # -*- coding=GBK -*- 2 import cv2 as cv 3 4 5 ...
- myeclipse 打开jsp文件出错
第一步:找到MyEclipse的安装路径:第二步:删除掉MyEclipse\configuration下名为:org.eclipse.update的文件夹:第三步:产出之后重启myeclipse,在打 ...
- 【学习ffmpeg】打开视频文件,帧分析,并bmp保存关键帧
http://www.tuicool.com/articles/jiUzua http://blog.csdn.net/code_future/article/details/8646717 主题 ...
- 从HighGUI的一段代码中看OpenCV打开视频的方式
OpenCV的HighGUI提供了视频和摄像头的直接打开.那么它是如何实现的了?这里进行初步分析. ; switch(apiPreference) { default: ...
- C++ 调用 opencv 读取视频文件列表并处理
//g++ trans_video.cpp -o trans_video `pkg-config opencv --libs --cflags` -L/usr/lib/x86_64-linux-gnu ...
- matlab -xlsread 打开xls文件出错:服务器出现意外情况
错误:xlsread:服务器出现意外情况 原因:非matlab问题,Excel的com加载项启用 解决方法:office - Excel选项-加载项:管理-com加载项-转到-取消可用加载项的勾选.
随机推荐
- update更新修改数据
update ---整表更新数据 update 表名 set 需要调整字段1= '值1' ,需要调整字段2= '值2' …… ---更新条件数据 update 表名 set 需要调整字段 ...
- 简单的mongo小工具 python
#!/bin/python #coding=utf-8 ### eg : mgotool.py -i 127.0.0.1 -p 10001 -a xxxxx -u root -rc #import s ...
- docker build
nginx Docfile ----------------------- FROM centos MAINTAINER daniel RUN yum install -y wget RUN ...
- jquery的JSON字符串处理、单引号双引号的转换
1.jquery的JSON字符串处理 var pwdlevel_val = "{"minLength":1,"maxLength":20," ...
- IOS移动端(H5)alert/confirm提示信息去除url
前几天写移动端项目用alert和confirm进行信息提示,但发现在iOS系统中,每次提示信息上面都会被添加一行URL地址,安卓却没有,经过查找之后,果然不出所料,兼容!!兼容!!!兼容!!! 需要重 ...
- 3. HTML中的容器标签
什么是容器标签?在HTML开发中我们常常会使用一类标签作为容器放置一些内容,我们把这类标签称之为容器标签,可以作为容器标签的包括列表标签.表格标签.框架标签.布局标签,在这里我们就来总结下这些内容. ...
- Java : java基础(5) Socket网络编程
使用 DatagramSocket 创建一个 UDP协议的Socket, 用DatagramPacket创建一个数据包,可以指定ip和端口号以及包的数据,用socket.send()可以发送这个数据包 ...
- 1010 一元多项式求导 (25 分) C语言
设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为nxn−1.) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数).数字间以空格分隔. ...
- C语言程序设计:现代方法(第2版)第二章全部习题答案
前言 本人在通过<C语言程序设计:现代方法(第2版)>自学C语言时,发现国内并没有该书完整的课后习题答案,所以就想把自己在学习过程中所做出的答案分享出来,以供大家参考.这些答案是本人自己解 ...
- Git项目管理
参考 参考书籍 <git学习指南> 参考网站 https://git-scm.com/ Git局限性讨论 高复杂度 两张图看懂集中式版本管理系统和分布式管理系统的区别-集中式vs分布式 g ...