簡體   English   中英

無法在OpenCV 3中讀取mp4文件

[英]Can't read mp4 files in opencv 3

嘗試使用VideoCapture打開文件時,我什至無法編譯opencv 3.0.0(opencv網站的預編譯版本)。

我將代碼縮減為:

#include "stdafx.h"
#include <opencv/cxcore.h>
#include <opencv2/core/mat.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <opencv/cxcore.h>
#include <opencv/highgui.h>
#include <opencv/cv.h>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>

#include <string>
#include <cmath>
#include <time.h>

using namespace cv;
using namespace std;
int main() {
   VideoCapture inputCap("C:/Users/user.name/Desktop/Video0022.mp4");
}

並將其編譯為: opencv_ffmpeg300_64.dll : fata error LNK1107: invalid or corrupt file: cannot read at 0x408在文件opencv_ffmpeg300_64.dll的第1行第1行的0x408 opencv_ffmpeg300_64.dll : fata error LNK1107: invalid or corrupt file: cannot read at 0x408

這是在Win 7機器上使用Visual Studio Express 2012,在C ++中以x64編譯的。 我試過在Release模式和Debug模式下編譯代碼,並且給出相同的錯誤。 該dll在鏈接程序中具有其他依賴關系,而我在其他庫目錄中擁有該庫。

那是行不通的,環顧四周,我發現在Java和Python版本中,將目錄添加到path變量有時行得通。 這樣做,重新啟動,再試一次,同樣的錯誤。

然后,我剛剛開始在可能有用的所有位置添加dll-全部通過My Documents / Visual Studio 12 / Projects / ProjectName文件夾,在opencv文件夾中的多個位置,並且仍然是相同的錯誤。

我還嘗試了關閉啟用的增量鏈接,但這也沒有用。

我很確定這不是編解碼器問題,因為它在opencv 2.4.7 / visual studio 10中有效(我將文件夾opencv 2重命名為不打擾opencv 3.0.0安裝)。

視頻本身很好,我可以在VLC和Windows Media Player中打開它,也沒有問題,並且可以使用較舊的opencv東西。

如果我從鏈接器的其他依賴項中刪除dll,則可以編譯.cpp,但實際上它永遠不會打開文件( inputCap.isOpened()始終返回false)。 但是,我可以正常打開網絡攝像頭。

-

編輯:我將發布運行時庫更改為/ MT而不是/ MD,刪除了鏈接器的調試和發布版本上的opencv_ffmpeg300_64.dll附加依賴項,現在該視頻文件的發布和調試都可以正常工作。

(我沒有意識到要解決的問題是我是否解決了自己的問題,哎呀)

通過將發行版運行時庫更改為/ MT而不是/ MD來進行修復,刪除了鏈接器的調試和發行版上的opencv_ffmpeg300_64.dll附加依賴項,現在發行版和調試均可以編譯並正常運行視頻文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM