當前位置:首頁 » 編程軟體 » opencv編譯選擇ffmpeg

opencv編譯選擇ffmpeg

發布時間: 2022-08-09 19:27:19

A. linux下安裝opencv必需要先安裝ffmpeg嗎

看到個類似的問題: www.avidemux.org/smf/index.php?topic=11974.0 你這個東西真不好說,不過看來是 x264 因為是靜態編譯,靜態編譯我記得需要別的函數庫也是靜態的。你這個應該是 x264 本身就有找不到的函數入口問題,導致現在傳染給了 ffmpeg

B. linux里opencv怎麼交叉編譯

一、交叉編譯opencv 構造: 下載:各個庫的下載可以直接搜名字到官網下載 幾個關鍵解釋: 「--prefix=」 後邊跟make install時的位置,本例中,libz在make install時將安裝到/usr/arm-linux-gnueabihf中 「--host=」 後邊跟arm-linux表明使用的是ARM環境 有configure的才能進行configure配置 4)所有的makefile修改類似 Libz的交叉編譯 第一步:# ./configure --prefix=/usr/arm-linux-gnueabihf --shared 第二步:修改makefile,主要有下邊幾個,修改的時候通篇參照即可 CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar rc RANLIB=arm-linux-gnueabihf-ranlib STRIP = arm-linux-gnueabihf-strip 如果有ARCH的話,ARCH=ARM 第三步:#sudo make #sudo make install Libjpeg的交叉編譯 第一步:#./configure --host=arm-linux --prefix=/usr/arm-linux-gnueabihf --enable-shared --enable-static CC=arm-linux-gnueabihf-gcc 第二步:參考1)中方法修改makefile 第三步:#sudo make #sudo make install Libpng的交叉編譯 第一步:#./configure --host=arm-linux --prefix=/usr/arm-linux-gnueabihf --enable-shared --enable-static CC=arm-linux-gnueabihf-gcc 第二步:參考1)中方法修改makefile 第三步:#sudo make #sudo make install Yasm的交叉編譯 第一步:#./configure --host=arm-linux --prefix=/usr/arm-linux-gnueabihf --enable-shared --enable-static 第二步:修改makefile 第三步:#sudo make #sudo make install Libx264的交叉編譯 第一步:#CC=arm-linux-gnueabihf-gcc ./configure --enable-shared --host=arm-linux --disable-asm --prefix=/usr/arm-linux-gnueabihf 第二步:修改config.mak里的參數,因為makefile要調用config.mak,所以修改方法同makefile 第三步:#sudo make #sudo make install Libxvid的交叉編譯 第一步:首先切換目錄 #cd build/generic 第二步:#./configure --prefix=/usr/arm-linux-gnueabihf --host=arm-linux --disable-assembly 第三步:#sudo make #sudo make install ffmpeg的交叉編譯 第一步: ./configure --enable-cross-compile --target-os=linux --cc=arm-linux-gnueabihf-gcc --arch=arm --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-ffmpeg --disable-ffplay --enable-ffserver --enable-swscale --enable-pthreads --disable-yasm --disable-stripping --enable-libx264 --enable-libxvid --extra-cflags=-I/usr/arm-linux-gnueabihf/include --extra-ldflags=-L/usr/arm-linux-gnueabihf/lib --prefix=/usr/arm-linux-gnueabihf 第二步:修改makefile文件 第三步:#sudo make #sudo make install 第四步:將ffmpeg加入pkg-config 執行#sudo gedit /etc/bash.bashrc,在末尾加入 export LD_LIBRARY_PATH=/usr/arm-linux-gnueabihf/lib/ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/arm-linux-gnueabihf /lib/pkgconfig export PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR:/usr/arm-linux-gnueabihf /lib/ 完畢後使用命令:#source /etc/bash.bashrc 或者單獨使用三個export,不過壽命只在一個終端中,終端關閉時就失效。 幾個關鍵解釋:--extra-flags指向xvid的安裝路徑,--extra-ldflags指向x264的路徑 安裝cmake-gui 執行:#sudo apt-get install cmake-qt-gui Opencv的交叉編譯 第一步:修改opencv/platflrms/linux/目錄下的arm-gnueabi.toolchain.cmake,將其所有刪掉,寫入: set( CMAKE_SYSTEM_NAME Linux ) set( CMAKE_SYSTEM_PROCESSOR arm ) set( CMAKE_C_COMPILER arm-linux-gnueabihf-gcc ) set( CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++ ) 第二步:在opencv目錄下新建build目錄,進入build目錄,執行命令: #cmake -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake ../ 這時,要保證出現: 第三步:使用cmake-gui打開CMakeCache.txt,去掉所有的無關項,修改CMAKE_INSTALL_PREFIX,來確定make install的目錄 第四步:#sudo make #sudo make install 可能出現的錯誤: opencv編譯不通過,出現skip之類的,說明ffmpeg沒編譯好,或者其編譯好了,但是pkg-config沒有設置好,一定要設置好其環境 前邊幾步不通過的話,看看命令有沒有少,或者有沒有修改好makefile 在arm上使用時,一種方法時直接將編譯好的opencv目錄下的lib文件拷貝到開發板對應的/lib目錄下,其他或者拷貝到自己指定的目錄,並設置好環境變數即可使用

C. 本人想用opencv編程實現對視頻文件avi的讀取,編譯是成功的,但在程序執行完的時候,不能播放視頻avi文

好像opencv 2.0版本要求ffmpeg版本在0.7以下,反正是要求一個老的ffmpeg版本,是不是你的ffmpeg版本太新了……

D. linux 下同時裝了opencv和ffmpeg是否會有沖突

沖突的可能性也許是因為用了同一個庫。 例如opencv用了x_120.lib ffmpeg用了x_121.lib, 那麼由於一個編譯的時候makefile寫了環境變數導致另一個無法正常鏈接,你不把錯誤信息擺上來很難說清楚。

E. 如何讓OpenCV工程在沒有VS和OpenCV的電腦上運行

一、如何讓OpenCV工程在沒有VS和OpenCV的電腦上運行?
對於這個問題,有兩個方法:
1. 使用動態庫,講工程所需的.lib,.dll,.h等和工程.exe一起拷到另一台電腦上運行。
2.使用靜態庫,講工程需要的.lib直接編譯進.exe中,這時的.exe會比方法1中的大很多,但是此時只需要拷貝一個.exe就可以在另一台電腦上運行了。

二、如何將.lib編譯進.exe中?
注意這里的.lib是靜態鏈接庫,與動態鏈接庫的引導庫.lib不同(動態鏈接庫.dll需要有一個.lib作為引導庫)。
將.lib編譯進.exe中的第一步是編譯OpenCV的靜態庫.lib。具體的編譯方法可以參考:OpenCV - 編譯靜態OpenCV庫(靜態庫)
生成OpenCV的靜態庫後,就可以進行第二步了。
1,將相應的靜態庫配置到工程中。
2,配置屬性-〉MFC的使用:設置為 在靜態庫中使用 MFC
3,配置屬性-〉C/C++ -〉代碼生成-〉運行庫 :設置為 多線程 (/MT)。
在VC(2005以上)中有四種運行庫:Multi-threaded(/MT)、Multi-threaded-Debug(/MTD)、Multi- threaded-dll(/MD)、Multi-threaded-debug-dll(/MDD):前兩個是靜態類型庫,提供的函數會被鏈接到程序中;後兩個是動態庫,會以動態鏈接庫的形式提供函數給程序調用。
設置完之後,生成的.exe就可以直接使用了。
該部分可參考:OpenCV學習筆記(三十二)——製作靜態庫的demo,沒有dll也能hold住

三、補充
1, 其實在安裝和編譯OpenCV後,其本身已經包含了靜態庫,在 \build\x86\vc10\staticlib 和\build\x64\vc10\staticlib 路徑下,所以本文的使用CMake 編譯靜態庫可以省略掉。
2。按照 二 中的步驟生成.exe運行,發現讀取視頻不成功。原因是OpenCV的視頻解碼等處理是基於ffmpeg,而OpenCV僅僅提供了ffmpeg的動態鏈接庫 opencv_ffmpeg***.dll,並沒有其靜態鏈接庫,即使是使用CMake也不能生成(勾選WITH_FFMPEG也不行)。
所以如果想讓視頻讀取成功,該.exe需要一個.dll支持,即opencv_ffmpeg***.dll。
3。編譯ffmpeg靜態庫的方法可以參考:MinGW下編譯ffmpeg靜態庫給Visual C++使用
按照該方法可以編譯出一堆.a文件,即ffmpeg的靜態庫。這些.a文件的調用具有一定的順序。
但是我按照文中方法設置後依然無法打開視頻。
同時我注意到,OpenCV中也有類似的文件,存放於 \opencv\3rdparty\include\ffmpeg_ 及opencv\3rdparty\lib 中,料想就是ffmpeg的靜態庫,但是設置後依然無法打開視頻。
所以,萬不得已,最後的方法還是加入一個.dll支持,即opencv_ffmpeg***.dll。
4。針對文章:OpenCV學習筆記(三十二)——製作靜態庫的demo,沒有dll也能hold住 中提到的videoInput.lib,我始終都沒有找到,料想是版本的不同吧。

F. 使用ffmpeg和OpenCV videowriter問題,怎麼解決

第一,檢查一下argv[1]的參數是否讀進來了,也就是cap的內容是否正確。
第二,把cvReleaseCapture(&cap);
cvDestroyWindow("E");
兩句話移到while循環外面,否則循環第一次,就釋放了cap和window,下次訪問時肯定會出錯

G. windows下opencv為什麼不需要ffmpeg

在CentOS 上編譯opencv,在讀取mp4視頻關鍵幀的時候,CvCaptuer* capture總是返回空值,查明是解碼器原因,要安裝ffmpeg,但是安裝好之後情況依然如此,在opencv cmake CMakeList.txt時ffmpeg選項總是No,網上找了很多方法,改路徑啊什麼的都沒用

H. opencv 編譯後出現無法打開文件 cap_ffmpeg.cpp:454

我的解決了,我的是播放視頻文件的,是文件的路徑沒對,應該放在同名文件下。你新建的文件下面會有一個一個和你所建的文件同名的一個文件,把視頻放在這個文件下就行了。雖然問題已經是好幾年前的了,但我還是得讓那些和我犯了同樣錯的人不要再過多浪費時間

I. OpenCV交叉編譯時用到的幾個依賴庫

OpenCV交叉編譯時用到的幾個依賴庫。在BB Black 入門基礎之OpenCV的交叉編譯 一文中用到。大家有需要的可以拿去用。
↑收起

文件列表
.deps
----|ControlResource.Po
----|DCU99Editor.Po
----|DuplexEditor.Po
.eclipseme.tmp
----|emulation
----|----|PhoneBook.jad
----|----|PhoneBook.jar
verified
----|classes
----|----|com
----|----|----|north
----|----|----|----|phonebook
----|----|----|----|----|model
----|----|----|----|----|----|Account.class
----|----|----|----|----|----|ApplicationException.class
----|----|----|----|----|----|Index.class
----|----|----|----|----|----|Model$AccountFilter.class
----|----|----|----|----|----|Model$IndexFilter.class
----|----|----|----|----|----|Model.class
----|----|----|----|----|----|Preference.class
----|----|----|----|----|----|UserModel.class
ui
----|ConfirmationDialog.class
----|DetailInfoUI.class
----|Dialog.class
----|DialogListener.class
----|IndexFunctionUI$ListIndex.class
----|IndexFunctionUI.class
----|ListMerchantGroupUI.class
----|ListPhoneUI.class
----|LoginUI.class
----|MerchantGroupDetailInfoUI.class
----|NewPhoneUI.class
----|SearchPhoneUI.class
----|Title.class
----|UIController$1.class
----|UIController$EventID.class
----|UIController.class
----|WaitCanvas$1.class
----|WaitCanvas.class
----|WelcomeUI.class
PhoneBookMIDlet.class
.myeclipse
----|CVS
----|----|Repository
----|----|Root
.settings
----|CVS
----|----|Entries
----|----|Repository
----|----|Root
org.eclipse.core.resources.prefs
.svn
----|prop-base
props
text-base
----|readme.txt.svn-base
tmp
----|prop-base
props
text-base
all-wcprops
dir-prop-base
entries
format
.tmp_versions
----|dw4002.mod
dependence
----|ffmpeg-0.10.3.tar.bz2
----|jpegsrc.v8d.tar.gz
----|libpng-1.5.14.tar.gz
----|libv4l-0.6.1.gz
----|tiff-4.0.3.tar.gz
----|x264-snapshot-20120528-2245-stable.tar.bz2
----|xvidcore-1.3.2.tar.gz
----|zlib127.zip
..dir.dat
._CotEditor_346
._PortVaR
.classpath
.cproject
.cxl
.depend
.dw4002.ko.cmd
.dw4002.mod.o.cmd
.dw4002.o.cmd
.exe
.gitignore
.htaccess
.message
.pdf
.project
.qmake.internal.cache
.screenrc
.synopsys_dc.setup
.synopsys_pt.setup
.untf
.vimrc
.xhdl3.xref

J. ffmpeg 和 opencv哪個更好

如果單純要播放功能的話,直接用ffmpeg就是了。opencv也只是包括ffmpeg而已,當然在上面做了一些個可能會用起來比較方便的工具,但是如果做的功能復雜那些東西你也用不上。

熱點內容
一台存儲可以配幾個擴展櫃 發布:2025-02-08 01:53:22 瀏覽:564
分布式存儲技術優缺點 發布:2025-02-08 01:51:37 瀏覽:244
linuxsuse重啟 發布:2025-02-08 01:49:27 瀏覽:410
java對稱加密 發布:2025-02-08 01:48:04 瀏覽:521
java報表框架 發布:2025-02-08 01:47:59 瀏覽:928
方舟手游怎麼防止踢出伺服器 發布:2025-02-08 01:42:44 瀏覽:690
c語言中函數的聲明函數 發布:2025-02-08 01:41:08 瀏覽:69
編譯termux 發布:2025-02-08 01:39:42 瀏覽:650
王者榮耀安卓哪裡看ios國服榜 發布:2025-02-08 01:25:54 瀏覽:630
解壓帶教程 發布:2025-02-08 01:16:33 瀏覽:760