OpenCV在多线程下不能读取AVI视频新的解决办法:
问题情况:在OpenCV中,使用cvCaptureFromAVI打开一个视频文件后,并使用cvReleaseCapture释放关闭它后,再开启一个线程使用cvCaptureFromAVI打开一个视频文件,此时就会出现错误,在调试中,执行这个“CvCapture *capture = cvCaptureFromAVI( m_strVideoPath ); ”语句后也会出现capture的内存取值为0x00000000,也就是在多线程中cvCaptureFromAVI不能多次使用, cvReleaseCapture这个语句没有彻底执行.
解决方法:多线程使用前必须加一句CoInitialize(NULL);来对线程进行一个初始化;问题的本质原因是在OpenCV的打开视频文件等操作过程,其里面可能含有设置COM库的内容,但是鄙人怎能这么清楚的了解呢,故在相关设计中需要对Com库进行初始化,方可好用。
其他思考:在多线程编程的过程中,对于类似相关问题可能就是COM库的初始化问题,本质上这些读取或设置权限都是在系统级别上的,用户态的操作不大有可能。
通过OpenCV读取AVI视频,多路视频输出播放器
最新推荐文章于 2024-07-02 16:41:55 发布