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加载项-转到-取消可用加载项的勾选.
随机推荐
- redhat5本地源NBD驱动安装
1.将镜像挂载到本机上 1)将系统ISO镜像放到自己电脑/root下 lsb_release -a 查看系统类型 2)在(/)目录下,建立yum目录 mkdir /root/yum 3 ...
- 走进MySQL
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用 ...
- 增强for循环和迭代器
package example6; import java.util.ArrayList;import java.util.Iterator;import java.util.List; class ...
- 7z 压缩解压简单示例
7z命令行压缩示例: 7z -tZip a test.zip ./test/* -mx0 把test文件夹中所有文件以存储压缩的模式压缩成zip格式的文件,压缩文件为test.zip a为添加选项 ...
- Spark RDD API详解之:Map和Reduce
RDD是什么? RDD是Spark中的抽象数据结构类型,任何数据在Spark中都被表示为RDD.从编程的角度来看, RDD可以简单看成是一个数组.和普通数组的区别是,RDD中的数据是分区存储的,这样不 ...
- JS第一周学习笔记整理
目录 JS正式课第一周笔记整理 JS正式课第一周笔记整理 webstorm : 代码编辑器 浏览器: 代码解析器: Git : 是一个工具;用于团队协作开发项目管理代码的工具:在工作中用git.svn ...
- django路由基本使用-6
路由定义位置 django的路由是定义在 urls.py 文件下的 urlpatterns 列表中的. urls.py 文件是路由解析的入口. from django.conf.urls import ...
- Go语言的数据类型
1 概述 Go语言作为类C语言,支持常规的基础数据类型的的同时,支持常用的高级数据类型.他们是: 整数,int,uint,int8,uint8,int16,uint16,int32,uint32,in ...
- <简明>Markdown指南
什么是Markdown?Markdown是一种轻量级的「标记语言」,通常为程序员群体所用,目前它已是全球最大的技术分享网站 GitHub 和技术问答网站 StackOverFlow 的御用书写格式. ...
- JavaScript---复选框全选的多种实现
<script language=javascript> //第一种方法 function selectall1() { var a = document.getElementsBy ...