大家好,我是青空。
最近一直在做相机照片传输相关的事情,在传输的过程中使用了好几种方法。
- tcp socket 交互
- udp 传输
- http server
- mjpeg streamer
经过几轮测验,我们选择了 mjpeg streamer ,我们在使用 opencv 的 videocapture 进行图片接收的时候 遇到了以下问题
openCV4.4.0 error: (-5:Bad argument) CAP_IMAGES: can’t find starting number (in the name of file)
单纯看错误信息,应该是打开视频流的方式不对。
我尝试了使用 CAP_DShow
, CAP_OPENCV_MJPEG
, CAP_FFMPEG
这几种方式都不对。就非常怀疑是 OpenCV 有问题,还是其他的原因。
在 ubuntu 的环境下,通过 CAP_ANY
的方式可以打开,但是在 windows 环境下就跪了,表示不能理解。
转而使用 C# OpenCVSharp4 来进行测试,唉, 成功了。
这就可以确定,这是一个C++ OpenCV 中的依赖问题。 剩下的解决方式基本就是 要么自己编译opencv, 要么找出具体的依赖dll。
通过 Dependencies 软件定位依赖,但是还是没有定位到。通过确定 opencvsharp4 依赖的dll, 我似乎找到了答案。opencvsharp4, 依赖了一个ffmpeg 的dll。
结果在c++ opencv build 文件夹中也找到该文件, 把该文件放到 System32 目录下,重新尝试了一把,成功了。
问题随之解决。