ubuntu编译安装opencv
- 安装依赖
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
安装后更新
sudo apt-get update
sudo apt-get upgrade
-
编译安装opencv
解压opencv:/home/cym/programfiles/opencv/opencv-4.3.0(按自己的路径修改)
解压OpenCV_contrib:/home/cym/programfiles/opencv/opencv_contrib-4.3.0
cd /home/cym/programfiles/opencv-4.3.0
mkdir build
cd build
# cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. -D BUILD_TIFF=ON
cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.3.0/modules \
-D OPENCV_GENERATE_PKGCONFIG=YES \
-D WITH_1394=OFF ..
make -j 16 #这里的16只cpu核数,可通过nproc命令获取
make install
- 测试opencv
mkdir test_opencv
cd test_opencv
gedit CMakeLists.txt
gedit test.cpp
# CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project( test )
set(OpenCV_DIR /home/cym/programfiles/opencv-4.3.0/release)
find_package( OpenCV REQUIRED )
add_executable( test test.cpp )
target_link_libraries( test ${OpenCV_LIBS} )
// test.cpp
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv )
{
if ( argc != 2 )
{
cout<<"please input commond: test <Image_Path>\n";
return -1;
}
Mat image;
image = imread( argv[1], 1 );
if ( !image.data )
{
cout<<"No image data \n";
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey(0);
return 0;
}
编译执行程序
mkdir build
cd build
cmake ..
make
./test <image_path> # 执行程序,如。./test ../lena.jpg
- 坑
# error1
CMake Error at CMakeLists.txt:11 (message):
FATAL: In-source builds are not allowed.
You should create separate directory for build files.
-- Configuring incomplete, errors occurred!
原因:
有很多教程是直接在opencv目录下直接执行cmake .,然后sudo make install.
这样cmake阶段就会报error1。
解决:mkdir build,在build里面cmake就解决了。在build下面cmake还不行,可能是之前cmake生成了缓存文件CMakeCache.txt,删除就可以了。
# error 2
CMake Error at CMakeLists.txt:12 (find_package):
By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "OpenCV", but
CMake did not find one.
Could not find a package configuration file provided by "OpenCV" with any
of the following names:
OpenCVConfig.cmake
opencv-config.cmake
Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
"OpenCV_DIR" to a directory containing one of the above files. If "OpenCV"
provides a separate development package or SDK, be sure it has been
installed.
原因:系统找不到opencv。
解决:在CMakeLists.txt文件中添加下面代码
set(OpenCV_DIR /home/cym/programfiles/opencv-4.3.0/release)
持续更新