本文简要介绍OpenCV4在Ubuntu 1810上的安装。
目前OpenCV最新的稳定版本是4.0.1,可以从官网下载并解压,也可以从github上获取最新源码进行安装
- 安装依赖
sudo apt-get install cmake build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev:i386 libtiff5-dev
2. 获取opencv并安装,注意打开OPENCV_GENERATE_PKGCONFIG=ON,以便pkg-config使用,github出现issue,如果要加Python3,那么请打开对应的选项并填好路径[不过应该没必要,pip中的OpenCV现在已经是4的版本了]
# step 1
mkdir somedir
cd somedirgit clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.gitcd opencv && mkdir build &&cd build# step 2
#########################################################
# Option 1 :Simple #
#########################################################
cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DOPENCV_GENERATE_PKGCONFIG=ON ..
#########################################################
# Option 2 :more Complex,加入opencv_contrib模块 #
#########################################################
cmake -D CMAKE_BUILD_TYPE=RELEASE
-D CMAKE_INSTALL_PREFIX=/usr/local
-D OPENCV_GENERATE_PKGCONFIG=ON
-D INSTALL_PYTHON_EXAMPLES=ON
-D INSTALL_C_EXAMPLES=ON
-D OPENCV_ENABLE_NONFREE=ON
-D OPENCV_EXTRA_MODULES_PATH=~/Documents/opencv4/opencv_contrib/modules
-D BUILD_EXAMPLES=ON ..
#########################################################
# Option 3 : #
# OpenCV4.1.1 on Ubuntu1604 with Miniconda3 & Python3.7 #
#########################################################
cmake -D CMAKE_BUILD_TYPE=RELEASE
-D CMAKE_INSTALL_PREFIX=/usr/local
-D OPENCV_GENERATE_PKGCONFIG=ON
-D INSTALL_PYTHON_EXAMPLES=ON
-D INSTALL_C_EXAMPLES=ON
-D OPENCV_ENABLE_NONFREE=ON
-D OPENCV_EXTRA_MODULES_PATH=~/repo/opencv_contrib/modules
-D PYTHON3_EXECUTABLE=/home/gpu05/miniconda3/bin/python
-D PYTHON_INCLUDE_DIR=/home/gpu05/miniconda3/include/python3.7m
-D PYTHON_LIBRARY=/home/gpu05/miniconda3/lib/libpython3.7m.so
-D PYTHON3_NUMPY_INCLUDE_DIRS=/home/gpu05/miniconda3/pkgs/numpy-1.17.0-py37h95a1406_0/lib/python3.7/site-packages/numpy/core/include/numpy
-D BUILD_EXAMPLES=ON ..make -j8
sudo make install
3. 使用pkg-config测试
$ pkg-config --libs --cflags opencv4
-I/usr/local/include/opencv4/opencv -I/usr/local/include/opencv4 -L/usr/local/lib -lopencv_dnn -lopencv_gapi -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_video -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_flann -lopencv_videoio -lopencv_imgcodecs -lopencv_imgproc -lopencv_core
4. 小Demo测试,show.cpp:
// show.cpp
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>#include <iostream>
#include <string>using namespace cv;
using namespace std;int main( int argc, char** argv )
{String imageName("/home/paul/Pictures/test.jpg" ); // by defaultif( argc > 1){imageName = argv[1];}Mat image;image = imread( imageName, IMREAD_COLOR ); // Read the fileif( image.empty() ) // Check for invalid input{cout << "Could not open or find the image" << std::endl ;return -1;}namedWindow( "Display window", WINDOW_AUTOSIZE ); // Create a window for display.imshow( "Display window", image ); // Show our image inside it.waitKey(0); // Wait for a keystroke in the windowreturn 0;
}
编译并执行,可加-std=c++11选项:
g++ show.cpp -o show.o $(pkg-config --libs --cflags opencv4)
or
g++ -std=c++11 show.cpp -o show.o $(pkg-config --libs --cflags opencv4)
./show.o
结果如下:
5. 测试目标检测Demo-Yolo V3,进入从git上拉下来的/opencv/samples/dnn目录,编译并执行,对摄相头进行目标检测
cd /yourdir/opencv/samples/dnn
g++ object_detection.cpp -o object_detection -std=c++11 $(pkg-config --libs --cflags opencv4)
./object_detection --@alias=yolo --classes=/yourdir/opencv/samples/data/dnn/object_detection_classes_yolov3.txt
完结!