1下载源码
下载源码
https://github.com/opencv/opencv/releases/tag/3.4.9
https://github.com/opencv/opencv/releases/tag/3.4.20

下载扩展源码
https://github.com/opencv/opencv_contrib/releases/tag/3.4.9
https://github.com/opencv/opencv_contrib/releases/tag/3.4.20


2安装依赖
sudo apt-get update sudo apt-get install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev sudo apt-get install -y python2.7-dev python3.6-dev python-dev python-numpy python3-numpy python3 -m pip install --upgrade pip sudo apt-get install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev sudo apt-get install -y libjasper1 libjasper-dev sudo apt-get install -y libdc1394-22-dev sudo apt-get install -y libv4l-dev v4l-utils qv4l2 sudo apt-get install -y curl
sudo apt install libhdf5-dev
#后面用到 sudo apt-get install -y cmake-gui
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran libgtk2.0-dev libjpeg-dev libpng-dev
sudo apt-get install libvtk6-dev
打开
cmake-gui


3-1 扩展库位置

3-2 cuda 一把不选

3-3 sifi点

3-4 java 不需要

3-5 python 默认吧

3-6 集成库 不要

3-7安装路径 多版本共存问题
https://blog.csdn.net/xiao_qs/article/details/126650329
一般是/usr/local/lib下,比如我的opencv4.4.5, 因为安装的时候如果不指定prefix路径,那么在make install 时会将所有的 .so 文件安装在 /usr/local/lib 下,所有的头文件安装在/usr/include下。
修改

4 生成



成功后


5 编译

sudo make -j8
安装
sudo make install


将文件权限放开,否则编译即使有路径也找不到
sudo chmod -R 777 /home/r9000k/v1_software/opencv/opencv349/install/
权限解除


多版本配置 指定版本opencv参与项目编译
CMakeLists.txt
#设置opencv安装路径
set(OpenCV_DIR "/home/r9000k/v1_software/opencv/opencv349/install")
# 方式2:通过CMAKE_PREFIX_PATH
#set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/home/r9000k/v1_software/opencv/opencv349/install")
find_package(OpenCV REQUIRED
COMPONENTS
core imgcodecs videoio features2d calib3d highgui)
# 打印调试信息
message(STATUS "OpenCV found: ${OpenCV_FOUND}")
message(STATUS "OpenCV version: ${OpenCV_VERSION}")
message(STATUS "OpenCV include dirs: ${OpenCV_INCLUDE_DIRS}")
message(STATUS "OpenCV libs: ${OpenCV_LIBS}")
include_directories(${OpenCV_INCLUDE_DIRS})
# add_executable(your_executable your_source_files)
# target_link_libraries(your_executable ${OpenCV_LIBS})
系统配置文件

sudo chmod -R 777 .bashrc
用这个模式 不容易解析错误
# OpenCV 环境配置 #export OpenCV_DIR=/home/r9000k/v1_software/opencv/opencv349/install//share/OpenCV export OpenCV_DIR=/home/r9000k/v1_software/opencv/opencv349/install/ export LD_LIBRARY_PATH=/home/r9000k/v1_software/opencv/opencv349/install/lib:$LD_LIBRARY_PATH # C++ 包含路径 - 改到 include 目录 export CPLUS_INCLUDE_PATH=/home/r9000k/v1_software/opencv/opencv349/install/include/opencv2:$CPLUS_INCLUDE_PATH
# opencv4.5 OpenCVConfig位置 #export OpenCV_DIR=/home/dongdong/1sorftware/1work/opencv/opencv455/install/lib/cmake/opencv4 #export LD_LIBRARY_PATH=/home/dongdong/1sorftware/1work/opencv/opencv455/install/lib:$LD_LIBRARY_PATH #export CPLUS_INCLUDE_PATH=/home/dongdong/1sorftware/1work/opencv/opencv455/install/include/opencv4:$CPLUS_INCLUDE_PATH

使更改生效:
source ~/.bashrc
检查确认
echo $OpenCV_DIR
8测试
1系统环境没有添加opencv
2 装了两个版本

创建工程

CMakeLists.txt
容易受到默认系统路径其他的opencv干扰,例如ros cv_briage 直接装自动装opencv4.2到系统目录
cmake_minimum_required(VERSION 3.1)
#项目名字
project(opencv_example_project)
#设置opencv安装路径
set(CMAKE_PREFIX_PATH "/home/r9000k/v1_software/opencv/opencv349/install")
#set(CMAKE_PREFIX_PATH "/home/r9000k/v1_software/opencv/opencv455/install")
#自动查找库和文件
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
#打印消息
message(STATUS "OpenCV library status:")
message(STATUS " config: ${OpenCV_DIR}")
message(STATUS " version: ${OpenCV_VERSION}")
message(STATUS " libraries: ${OpenCV_LIBS}")
message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}")
#生成可知性文件
add_executable(opencv_example main.cpp)
#可执行文件绑定库
target_link_libraries(opencv_example PRIVATE ${OpenCV_LIBS})
openvslam其他参考
#设置opencv安装路径
set(CMAKE_PREFIX_PATH "/home/r9000k/v1_software/opencv/opencv349/install")
set(OpenCV_DIR "/home/r9000k/v1_software/opencv/opencv349/install/lib/cmake/opencv4")
find_package(OpenCV REQUIRED
COMPONENTS
core imgcodecs videoio features2d calib3d highgui)
# 打印调试信息
message(STATUS "OpenCV found: ${OpenCV_FOUND}")
message(STATUS "OpenCV version: ${OpenCV_VERSION}")
message(STATUS "OpenCV include dirs: ${OpenCV_INCLUDE_DIRS}")
message(STATUS "OpenCV libs: ${OpenCV_LIBS}")
include_directories("/home/r9000k/v1_software/opencv/opencv349/install/include")
include_directories(${OpenCV_INCLUDE_DIRS})
include_directories(SYSTEM ${OpenCV_INCLUDE_DIRS})
main.cpp
#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/videoio.hpp"
#include <iostream>
using namespace cv;
using namespace std;
void drawText(Mat & image);
int main()
{
cout << "Built with OpenCV " << CV_VERSION << endl;
Mat image;
VideoCapture capture;
capture.open(0);
if(capture.isOpened())
{
cout << "Capture is opened" << endl;
for(;;)
{
capture >> image;
if(image.empty())
break;
drawText(image);
imshow("Sample", image);
if(waitKey(10) >= 0)
break;
}
}
else
{
cout << "No capture" << endl;
image = Mat::zeros(480, 640, CV_8UC1);
drawText(image);
imshow("Sample", image);
waitKey(0);
}
return 0;
}
void drawText(Mat & image)
{
putText(image, "Hello OpenCV",
Point(20, 50),
FONT_HERSHEY_COMPLEX, 1, // font face and scale
Scalar(255, 255, 255), // white
1, LINE_AA); // line thickness and type
}
传建build并编译
cmake ..

生成
make

执行
./opencv_example

浙公网安备 33010602011771号