ubuntu编译安装opencv以及遇到的坑

ubuntu编译安装opencv

  1. 安装依赖
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
  1. 下载opencv4.3.0OpenCV_contrib-4.3.0

  2. 编译安装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
  1. 测试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)

持续更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值