当前位置:首页 » 编程软件 » 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而已,当然在上面做了一些个可能会用起来比较方便的工具,但是如果做的功能复杂那些东西你也用不上。

热点内容
ea服务器怎么连接 发布:2025-02-08 05:16:45 浏览:461
更加密更改 发布:2025-02-08 05:15:20 浏览:782
仓储资源配置都需要开展哪些任务 发布:2025-02-08 05:13:51 浏览:675
探针数据库 发布:2025-02-08 05:13:35 浏览:79
cfft算法 发布:2025-02-08 04:53:59 浏览:961
极客学院php 发布:2025-02-08 04:52:32 浏览:779
书本编译是什么意思 发布:2025-02-08 04:45:56 浏览:953
淘宝密码账号在哪里看 发布:2025-02-08 04:29:39 浏览:536
描绘四季的美文写一份朗读脚本 发布:2025-02-08 04:29:21 浏览:139
金蝶软件服务器是电脑吗 发布:2025-02-08 04:27:06 浏览:974