@CrazyHenry
2018-03-25T11:28:52.000000Z
字数 2655
阅读 1977
vvvvOpenCV学习
- Author:李英民 | Henry
- E-mail: li
_
yingmin@
outlookdot
com- Home: https://liyingmin.wixsite.com/henry
快速了解我: About Me
转载请保留上述引用内容,谢谢配合!
按照官网的教程走下来没有问题。
[compiler] sudo apt-get install build-essential
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
[optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
略
cd ~/opencv //opencv为下载的版本目录
mkdir build
cd build
在build目录里:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
在build目录里:
make -j7 # runs 7 jobs in parallel
在build目录里:
sudo make install
按照官网的教程没有问题
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv )
{
if ( argc != 2 )
{
printf("usage: DisplayImage.out <Image_Path>\n");
return -1;
}
Mat image;
image = imread( argv[1], 1 );
if ( !image.data )
{
printf("No image data \n");
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey(0);
return 0;
}
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
上边两个文件放在同一目录,进入该目录:
cmake . #注意 有个点 .
make
会生成可执行文件DisplayImage在当前目录:
./DisplayImage lena.jpg #当前目录放一个lena.jpg文件
使用g++直接编译会出现问题
g++ DisplayImage.cpp -o 1 `pkg-config --cflags --libs opencv`
编译之后执行的时候会出现:
$ ./1 lana.jpg
./1: error while loading shared libraries: libopencv_highgui.so.3.4: cannot open shared object file: No such file or directory
目前认为是opencv的环境变量没有设置的原因,可以使用pkg-config来解决这个错误。因此用Cmake编译opencv的程序是最好的方式。
pkg-config参考:https://blog.csdn.net/honpey/article/details/8933933
在windows下Cmake 额外的contrib库会生成一个VS的工程,然后用VS编译工程。而在Ubuntu系统,会生成makefile,然后用make就可以生成,显然Ubuntu的操作更为简便。
contrib库的工作主要在人脸识别,目前没有用到的机会,但是可以尝试编译。
下载解压
https://github.com/opencv/opencv_contrib/archive/3.2.0.zip
网上有一个Cmake案例,但是个人感觉冗余太多
#build更多选项
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/home/fanzong/anaconda2/envs/tensorflow \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.2.0/modules \
-D PYTHON_EXCUTABLE=/home/fanzong/anaconda2/envs/tensorflow/bin/python \
-D WITH_TBB=ON \
-D WITH_V4L=ON \
-D WITH_QT=ON \ # 1
-D WITH_GTK=ON \
-D WITH_OPENGL=ON \
-D BUILD_EXAMPLES=ON ..
完整编译:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=<path to opencv_contrib/modules/> ..
局部(只编译contrib):
cmake -D OPENCV_EXTRA_MODULES_PATH=<path to opencv_contrib/modules/> ..
在build里:
make -j5
contrib官方:https://github.com/opencv/opencv_contrib