Linux下编译OpenCV3总结
来源:互联网 发布:微信公众平台域名备案 编辑:程序博客网 时间:2024/06/16 12:16
从源码编译OpenCV3
OpenCV于2015年6月4号,在其官网上正式发布了最新的OpenCV version 3.0
版本,貌似有挺多的更新。由于我要用到contrib
模块的文本检测工具,所以打算重新编译一下。
首先,我们来到 OpenCV 在 Github 上的主页,就可以看到 http://githu.com/Itseez 下有 opencv(主项目),opencv_extra(额外的数据),opencv_contrib(非正式发行的模块),copencv_3rdparty(用到的第三方库),等等子项目。我要用到的 text detection 算法就在 contrib 里面。
直接用终端下的git命令下载下来这两个 repository
git clone https://github.com/Itseez/opencv.gitgit clone https://github.com/Itseez/opencv_contrib.git
下载完以后,当前文件夹就会多了 opencv 和 opencv_contri 两个文件夹,和 Github 上一毛一样的。
接着我们要新建一个文件夹,叫 release 好了,我们要在这个文件夹下编译和安装 OpenCV,Linux下命令如下:
mkdir release && cd release
然后,我们要用 cmake 这个工具来编译整个项目的源文件,放心,makefile 什么的已经都给配置好了,我们只需要运行 cmake 命令,加一些我们要的参数就好了。
cmake 有一个参数为 -D,后可以跟变量名和赋的值,如 cmake -D CMAKE_BUILD_TYPE=RELEASE 表示我们要编译 release 版本。这里由于我要额外编译 contrib 模块,所以要告诉 cmake。最终这些东西会写进去CMakeCache.txt中。命令如下:
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \ -D CMAKE_INSTALL_PREFIX=/usr/local \ ../opencv
知道了要编译哪些东西,和编译的配置,我们就可以执行编译和安装了,运行下面两个命令,就开始慢慢等吧,我这里不到十分钟就好了,挺快的!编译会输出一堆红红绿绿的信息和进度等,编译完注意看最后的几行,有没有提示你出错。第二条命令要root权限,因为我们要把一些文件拷贝进系统文件夹下面。
makesudo make install
小试牛刀
我们下来看看,编译完以后,会有什么变化。运行下面的命令:
pkg-config --cflags --libs opencv
于是会输出一堆的 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_text 等,这些都是我们可引用的 OpenCV 静态库路径,熟悉 g++ 的同学知道这里的不同参数之间的区别。有兴趣的可以去深究。
我们来尝试编译一个opencv文件,如 ./opencv/samples/cpp/tutorial_code/introduction/display_image 下的 display_image.cpp 文件,源代码列出来吧:
#include <opencv2/core/core.hpp>#include <opencv2/imgcodecs.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream>#include <string>using namespace std;using namespace cv;int main(int argc, char **argv) { // 读取图片 Mat img = imread(argv[1]) // 创建一个窗口 namedWindow("display window", WINDOW_AUTOSIZE); // 在窗口里显示该图片 imshow("display window", img); // 等待键盘输入 waitKey(0); return 0;}
用下面的命令来编译:
g++ display_image.cpp -o display_image `pkg-config --cflags --libs opencv`
注意最右边的符号 ` 不是引号,而是键盘上 1 左边的那个。这是 shell 的语法,我就不多说了。
编译没有报错的话,就可以运行试试看了
./dispaly_image ./fish.jpg
然后你的 fish.jpg 图片就会显示在窗口中。
Python-OpenCV
当然,有时候,我们想用 OpenCV 的 Python 接口,那样子开发更方便。在 ./opencv/samples/python2/ 文件夹下面,有很多的例子,没事可以跑着玩玩。比如说:
python opt_flow.py
就可以运行一个叫做光流算法
的程序,听说可以检测运动的物体,我也不懂是干啥,但是觉得 Demo 好炫,好厉害有木有! OpenCV 真是太强大了。
平常我们学习的时候,可以多看看这些例子,非常有助于我们学习代码。官网的 tutorials + API Reference ,加上这些例子,不比读一本教程书来的简单。实际上,我更喜欢前者。
Python 有很好的文档机制,用 help 函数,直接在 terminal 里,就可以输出文档。 help的参数可以是函数名,也可以是变量。
import cv2print help(cv2.imread)img = cv2.imread('1.jpg')print help(img)
- Linux下编译OpenCV3总结
- Linux下编译OpenCV3总结
- Linux下编译安装opencv3.2.0
- Windows下编译Opencv3
- linux 编译安装 Opencv3.1.0
- Linux下 GCC编译总结
- opencv3.1.0+contrib模块编译总结
- linux 下安装opencv3.0在编译时出现的问题undefined reference to `parallel_pthreads_set_threads_num(int)'
- CMake + VS2013 Win7x64下编译opencv3.0
- window下编译Opencv3.1.0和opencv_contrib
- Windows平台下OpenCV3源码编译(VS2013)
- VC2010下编译OpenCV3.2问题记录
- Ubuntu16.04下编译OpenCV3.0.0
- hidapi在linux下编译总结
- OpenCV3编译
- 对gcc编译和linux下proc编译的总结
- gcc编译和linux下proc编译的总结
- linux下编译arm-gcc的交叉编译总结
- Ruby安装
- C语言实现标准正态分布函数和0-1均匀分布函数
- java 接口实现简单并能说明问题的例子
- ios 项目中 用到的动画
- android项目Tab标签页面大汇总(Fragment、Fragment+ViewPage、TabLayout)
- Linux下编译OpenCV3总结
- Phoenix使用总结
- Android之Fragment学习(二)
- 调试·传值·错误数字
- 分割问题(对递归的理解)
- 18、osg3.2.1+qt5.5+vs2010例子,也是osg中的例子
- 《挑战程序设计竞赛》2.3.1 动态规划-基础 POJ3176 2229 2385 3616 3280
- 使用Activity和Delegate与适配器交互
- 动态规划第二弹!CCF模拟题 有趣的数(数位DP)