背景:重装了操作系统,重新安装了OpenCV,设置了VS的OpenCV的路径,但是用cvCreateFileCapture读取文件时总是返回NULL
尝试了以下几种方法:
(1)怀疑了文件路径错误,经多次检查,文件路径没有错误,原因排除;
(2)怀疑是系统没有解码库,因为重新安装了操作系统,只有系统自带的播放器media player,因此安装了多个视频播放器,包括Kmplayer,potplayer,暴风影音,等等,但cvCreateFileCapture依然返回NULL,该原因排除;
(3)这时候突然想起,之前执行文件目录下是包含了一个opencv_ffmpeg244.dll的,后来删掉了,于是把OpenCV目录下的opencv_ffmpeg244.dll拷贝到执行文件目录下,读取视频成功,原来OpenCV使用这个dll进行解码。
(4)我把工程拷贝到别的电脑(装了OpenCV),发现执行文件下不需要opencv的dll也可以运行,但为什么之前的电脑需要把dll放在这里呢,重新检查了VS设置的库路径,发现没有问题。又怀疑是不是环境变量的问题,检查了这台电脑的环境变量,发现有几个变量包含了OpenCV的dll文件的路径,而重装系统后的那台电脑忘记了设置OpenCV的环境变量,于是在原来电脑上加上了环境变量,并删掉执行文件下的dll目录,运行成功