• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MKT-porter
博客园    首页    新随笔    联系   管理    订阅  订阅
ubuntu20安装opencv3.4.9 多版本

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

  

 

 

 

 

多版本配置 指定版本opencv参与项目编译

CMakeLists.txt

#CMAKE_PREFIX_PATH只是添加了查找路径,如果系统默认路径也有另一个版本的opencv,并不能指定

# 设置 OpenCV 的路径
# opencv4.5 OpenCVConfig位置
# set(OpenCV_DIR "/home/dongdong/1sorftware/1work/opencv/opencv455/install/lib/cmake/opencv4")
# opencv3.4.9 OpenCVConfig位置
set(OpenCV_DIR "/home/dongdong/1sorftware/1work/opencv/opencv349/install/share/OpenCV")
find_package(OpenCV REQUIRED)
 
# 你的其他配置
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版本制定
# opencv3.4.9 OpenCVConfig位置
export OpenCV_DIR=/home/dongdong/1sorftware/1work/opencv/opencv349/install/share/OpenCV
export LD_LIBRARY_PATH=/home/dongdong/1sorftware/1work/opencv/opencv349/install/lib:$LD_LIBRARY_PATH
export CPLUS_INCLUDE_PATH=/home/dongdong/1sorftware/1work/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})

  

  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

  

posted on 2023-09-22 20:50  MKT-porter  阅读(185)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3