对于Opencv来说视频读写是经常使用的功能之一,如今Opencv已更新到第4版本,故将原有Opencv3更新到Opencv4版本。在视频读写时,之前使用的视频写入操作的视频类型参数fourcc为:
CV_FOURCC('M','J','P','G')
如今将其改为:
static_cast<int>(video.get(CAP_PROP_FOURCC))
其中video是读入的视频名称。
改过之后,写入视频在isOpened()总是返回false,经过查阅博客发现,出现这种问题的原因可能是原视频格式有问题,故换一个视频可以写入,对比得到两个视频获取到的fourcc不一样。所以应该是原视频格式有问题,使得获取到的视频类型有问题,即使用下面代码获取可能会出错:
static_cast<int>(videoTmp.get(CAP_PROP_FOURCC))
但是,读入的视频video是可读的没有出错。故再想像原来使用
CV_FOURCC('M','J','P','G')
一样让写入的视频不出错,即写入的视频格式fourcc不能使用static_cast<int>(videoTmp.get(CAP_PROP_FOURCC))获取。查阅相关文档,最后使用的fourcc类型为:
CAP_ANY
就不会出错了。