對於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
就不會出錯了。