OpenCV 2.4.5编译安装方法

需要x264,ffmpeg和opencv2.4.5

x264下载地址:ftp://ftp.videolan.org/pub/x264/snapshots/
ffmpeg下载地址:http://www.ffmpeg.org/download.html
opencv下载地址:http://opencv.org/

我们使用最新的Ubuntu 13.04操作系统,所以采用比较高版本的ffmpeg等。x264采用20130503版本,ffmpeg采用1.2.1版本,opencv采用2.4.5版本。
ffmpeg对我们至关重要,ffmpeg用来边解码图像,读取输入输出AVI视频并显示,是我们的图形界面。x264作为一个补充,大家都安,所以我们也安装上把。OpenCV2.4.5有很多新的功能,最新的就是对显卡的进一步支持,这些我们都用不到,而且配置也更麻烦,所以我选择直接忽略掉,比如ocl模块没有编译,比如cvconfig.h头文件找不到,这些问题暂时不影响我们编译运行opencv程序,尤其是对我们的应用。不过对光流法而言,我发现示例代码中有三个文件夹,c,cpp和gpu,三个文件夹都包含光流法optical flow的demo,可见光流法很有研究意义。尤其是gpu文件夹里有,这可能有一些gpu上的好东西,有机会的话可以看看。

开始准备,因为是ubuntu,装软件比较方便,使用apt-get,把能装的都装上
sudo apt-get -y install autoconf automake build-essential git libass-dev libfaac-dev libgpac-dev \
  libmp3lame-dev libopus-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev \
  libvorbis-dev libvpx-dev libx11-dev libxext-dev libxfixes-dev pkg-config texi2html yasm zlib1g-dev
  
下载好三个文件后,新建文件夹,名字自取,我取build_sources。
首先编译x264,
tar xvf x264-snapshot-20130503-2245-stable.tar.bz2
cd x264-snapshot-20130503-2245-stable
./configure --enable-shared --enable-static
make
sudo make install

注:x264由ffmpeg静态调用,所以我们把编译好的文件放在系统库区就行,所以可以不make install,采用cp libx264.a /usr/lib \ cp x264.h /usr/include
参考链接:http://wenku.baidu.com/view/f095ac4133687e21af45a9e5.html

然后编译ffmpeg
参考链接为http://www.samontab.com/web/2011/06/installing-opencv-2-2-in-ubuntu-11-04/和http://www.samontab.com/web/2012/06/installing-opencv-2-4-1-ubuntu-12-04-lts/

ffmpeg采用11-04这个帖子里的做法。
tar xvf  ffmpeg-1.2.1.tar.bz2
cd  ffmpeg-1.2.1
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libxvid --enable-x11grab --enable-swscale --enable-shared
make
sudo make install

在./configure的参数种,--enable选项没有指定安装路径的话,一般都会安装在/usr/local,这里可以参看同目录下config.mak。由于ffmpeg将编译出很多库,尤其是libavformat.so,libavcodec.so, libavutil.so,libavfilter.so等,make install操作将把它们复制在/usr/local目录下,这些库将用于链接,所以ldconfig操作是必须的。
vim /etc/ld.so.conf,可以看到链接选项都在ld.so.conf.d/文件夹下。我们看到,在ld.so.conf.d文件夹下有文件:libc.conf
vim /etc/ld.so.conf.d/libc.conf
#libc default configuration
/usr/local/lib
可见已经被包括进去了,我们只需要在任意位置执行sudo ldconfig命令即可链接。

为检验ffmpeg是否安装成功,可以运行ffmpeg安装目录下的例子。
cd /usr/local/share/ffmpeg/examples/
sudo make
有一个例子是demuxing,是分离一个视频的影与音的,找一个标准格式的avi图像,我采用光流法的输入图像,optical_flow_input.avi
sudo ./demuxing optical_flow_input.avi video.avi audio
第一个参数是输入的avi视频,第二个参数是输出的脱离声音的音频,第三个是脱离的音频。
执行完毕后会打印输出
Demuxing succeeded.
Play the output video file with the command:
ffplay -f rawvideo -pix_fmt rgb24 -video_size 720x480 video.avi
我们可以执行最后一句输出ffplay -f rawvideo -pix_fmt rgb24 -video_size 720x480 video.avi 看到图像
这样就说明ffmpeg安装成功

最后是编译openCV
编译opencv要使用cmake,所以ubuntu要首先安装
sudo apt-get install cmake
tar xvf opencv-2.4.5.tar.gz
cd opencv-2.4.5
mkdir build
cd build
cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

注意mkdir build是必须的,cmake决定的
cmake的参数中还是有些比较重要的东西的,v4l是linux下可以用来通过摄像头采集图像的库,其他的可以有可以没有,视我们的需要而定。
make
sudo make install
sudo vim /etc/ld.so.conf.d/opencv.conf
输入/usr/local/lib
保存后,sudo ldconfig
然后sudo vim /etc/bash.bashrc
最后面添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存后,要重启,不重启用不了。

重启后,如何测试配置正确。
cd /usr/local/share/OpenCV/samples
cd c
sudo chmod +x build_all.sh
sudo ./build_all.sh
这时会出现
/tmp/ccLJWE0c.o: In function `cvRound': opencv.c:(.text+0x19):
undefined reference to `lrint' /tmp/ccLJWE0c.o: In function
`cvDecRefData': opencv.c:(.text+0xa5c): undefined reference to
`cvFree_' opencv.c:(.text+0xacd): undefined reference to `cvFree_'
/tmp/ccLJWE0c.o: In function `cvGetRow': opencv.c:(.text+0xbc3):
undefined reference to `cvGetRows' /tmp/ccLJWE0c.o: In function
`cvGetCol': opencv.c:(.text+0xbee): undefined reference to `cvGetCols'
/tmp/ccLJWE0c.o: In function `cvReleaseMatND': opencv.c:(.text+0xc01):
undefined reference to `cvReleaseMat' /tmp/ccLJWE0c.o: In function
这类的错误,根据stackoverflow的帖子
http://stackoverflow.com/questions/14676018/install-opencv-and-compile-c-program-using-gcc
解决办法是
Try adding -lm, to include the math library that provides lrint
在c后面添加-lm这个选项,修改build_all.sh
修改后的内容为
#!/bin/sh

if [ $# -gt 0 ] ; then
base=`basename $1 .c`
echo "compiling $base"
gcc -ggdb `pkg-config opencv --cflags --libs` $base.c -o $base 
else
for i in *.c; do
   echo "compiling $i"
   gcc -ggdb `pkg-config --cflags opencv` -o `basename $i .c` $i `pkg-config --libs opencv` -lm;
done
for i in *.cpp; do
   echo "compiling $i"
   g++ -ggdb `pkg-config --cflags opencv` -o `basename $i .cpp` $i `pkg-config --libs opencv`;
done
fi
然后再编译c文件就不会出错了。
这个帖子里提到很多有用的东西

1 添加-lm选项的理由
http://man7.org/linux/man-pages/man3/lrint.3.html
2 链接器的相关知识
http://www.lurklurk.org/linkers/linkers.html
http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
http://gcc.gnu.org/onlinedocs/cpp/Invocation.html#Invocation
3 共享库的相关知识
http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
4 pkg-config的相关知识
http://www.freedesktop.org/wiki/Software/pkg-config/
5 bash shell的一些扩展
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html

回答这个问题的人,真是个活字典。
编译完c文件夹下的代码,没有错误,执行./delaunay,可以看到图形界面,经典的opencv示例
如果有摄像头,执行./fback_c,说不定能采集图像,这点我的电脑能,但不能保证都做到。

然后把build_all.sh复制到cpp文件夹下和gpu文件夹下,cpp下没有问题,就是gpu下提示cvconfig.h找不到,这点我没有解决,不过不影响执行斯坦福的那段光流源码,那么到此opencv2.4.5配置完成。
有一点体会就是:每必要追求这么新的版本,2.2到2.3就可以了。

OpenCV2.4.5在13-04的配置过程相关推荐

  1. ubuntu 13.04 mysql_Ubuntu 13.04 MySQL Proxy安装与配置

    Ubuntu 13.04 MySQL Proxy安装与配置 安装环境 Ubuntu 13.04 Shell $ sudo apt-get install mysql-proxy 1 $sudoapt- ...

  2. opencv2.4.13在win10+VS2015下的配置过程

    opencv2.4.13在win10+VS2015下的配置过程 参考https://blog.csdn.net/shanghairuoxiao/article/details/69391229一个是本 ...

  3. VMware上安装ubuntu 13.04

    作者:viczzx 出处:http://www.cnblogs.com/zixuan-zhang 欢迎转载,也请保留这段声明.谢谢! 这两天打算在Linux环境下学Python语言,想换个高点的ubu ...

  4. ubuntu 13.04 设置Dash中显示Eclipse

    在ubuntu 13.04 下安装安卓开发工具: adt-bundle  android-ndk-r8e 都是解压后配置环境变量就可以使用了.但是Dash搜索不到,看起来很不舒服. 设置如下: 1.终 ...

  5. 安装ubuntu 13.04

    http://geek100.com/2390 今天给笔记本装了Ubuntu 13.04. 用惯了windows, 再用Ubuntu挺新鲜的, 最明显的感觉是Ubuntu的字体更好看. 关于Ubunt ...

  6. Ubuntu 13.04 软件安装

    来源:http://www.cnblogs.com/vincent-hv/archive/2013/05/23/3094193.html 配置软件源 $ sudo gedit /etc/apt/sou ...

  7. Linux16.04下配置Caffe,Pycaffe,matcaffe

    Caffe – 一个基于C++编写的深度学习框架,由于其高效性和便捷性广泛应用于CV领域.它是由贾杨清在业余时间编写的一个框架,现在是由伯特利尔大学(BVLC)来进行维护和更新. 由于它出现的比较早, ...

  8. linux+4.4+android,Ubuntu 14.04 x64配置Android 4.4 kitkat编译环境的方法

    Ubuntu 14.04 x64配置Android 4.4 kitkat编译环境的方法跟Ubuntu 12.04 - 13.10 以及jellybean编译环境配置没多大区别, 顺便记录下而已: 64 ...

  9. 怎样在 Ubuntu 13.04 Raring Ringtail , 12.10, 12.04 中安装和设置 Samba 实现网上邻居共享...

    Samba 是一款功能强大的共享工具,可以实现与windows的共享,就是我们经常在windows计算机之间使用的网上邻居功能,可以共享文件和打印机等.今天要介绍的是在 Ubuntu 13.04 Ra ...

最新文章

  1. 作物驯化与人类的生活
  2. vmware提示:此虚拟机似乎正在使用中,无法取得所有权的解决办法
  3. 计算机教学与课程论专业,东北师范大学专业介绍:计算机课程与教学论
  4. 论文页眉奇偶页不同怎么设置_怎样设置Word页眉页脚奇偶页不同?
  5. YOLACT++:目前最热门的实时实例分割开源库
  6. 抖音上线独立电商APP“抖音盒子”
  7. 移动办公之路的行业探索
  8. 使用IIS 7.0 Smooth Streaming 优化视频服务
  9. 重要提醒,单片机发展史,它到底是一个什么东西
  10. 编程基本功:一个任务的难度是不是适合自己,有没有产出,心里要有数
  11. java 读取html字符串替换字符
  12. 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三
  13. 在ubuntu上卸载anaconda
  14. 杭州计算机及应用不可以落户,90%的城市取消落户限制!附杭州落户超详细攻略...
  15. 物流设施布局方法——CRAFT
  16. Tomcat部署多个Sring Boot项目时Unable To Register MBean Exception的一种解决方法
  17. 廖碧儿现身亲吻爱犬 徐濠萦惋惜惠妮休斯顿离世
  18. 239期夏天计算机开机号,福彩3D16239期便民工作室提供中国福彩中心开机号239期开机号...
  19. Android 系统简单介绍
  20. 从事数据分析很牛X?要看你有没有认证

热门文章

  1. 吴钩:打开宋代的“隐藏玩法”
  2. 职称计算机word模拟题,2017年职称计算机考试Word2003模拟题及答案(1)
  3. mysql如何管理空间_管理空间的mysql数据库
  4. 杭州保俶塔实验机器人_【科教有闻】高照实验学校Pepper机器人课程亮相2020(杭州)国际数字教育大会“智能教育引领未来”论坛...
  5. 比特币官方客户端钱包是用什么语言开发的_5种主流比特币客户端的开发选型...
  6. 数字图像处理课设图像的锐化_数字图像处理图像锐化处理.ppt
  7. Elasticsearch索引的数据存储路径是如何确定的
  8. 5年之后,产品经理,没了?
  9. 2020年中国视频内容电商行业白皮书
  10. python not in range1002无标题_Python中偶尔遇到的细节疑问(一):去除列名特殊字符、标准差出现nan、切片索引可超出范围、range步长、众数...