[opencv][cpp] cpp-opencv 配置(ubuntu-linux)

[opencv][cpp] cpp-opencv 配置(ubuntu-linux)




1. linux 下配置opencv环境

1. 步骤1. opencv 官网下载 source code

2. 步骤2. 解压 opencv.zip

命令:source codeunzip opencv-xxx -d 目标路径`
robotDepends文件夹是专门用来存放ros项目的依赖,opencv依赖库是其中的一个,便于管理。
在这里插入图片描述

3. 步骤3. 提前安装依赖库

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"

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

4. 步骤4. 编译opencv源码

在源码文件夹中, 新建build目录, 进入build目录运行cmake

mkdir build
cd build    
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_OPENGL=ON ..
make    

5. 步骤5. 在clion中创建一个opencv项目

创建一个cmake文件夹,添加FindOpenCV.cmake文件
在这里插入图片描述



# once done, this will define
#OpenCV_FOUND        -  whether there is OpenCV in the prebuilt libraries
#OpenCV_INCLUDE_DIRS -  include directories for OpenCV
#OpenCV_LIBRARY_DIRS -  library directories for OpenCV
#OpenCV_LIBRARIES    -  link this to use OpenCV

unset(OpenCV_FOUND)

# set(<variable> <value>... [PARENT_SCOPE])
# Signatures of this command that specify a <value>... placeholder expect zero or more arguments. 
# Multiple arguments will be joined as a semicolon-separated list to form the actual variable value to be set. 
# Zero arguments will cause normal variables to be unset.

# 指定项目依赖库所在的路径变量,这里都放在 /robotDepends/libs目录下
# /home/jacob/devtools/robotDepends/libs/opencv_3.4.12/libs
set(PREBUILT_DIR /home/jacob/devtools/robotDepends/libs)

# 指定opencv头文件库文件所在的路径变量,这里放在 /libs/opencv_3.4.12目录下
set(OpenCV_DIR ${PREBUILT_DIR}/opencv_3.4.12)

MESSAGE(STATUS "TEST  ${PREBUILT_DIR}")

# 指定opencv头文件所在的路径变量,这里放在 /opencv_3.4.12/include目录下
set(OpenCV_INCLUDE_DIRS ${OpenCV_DIR}/include)

# eg: set(srcs a.c b.c c.c) # sets "srcs" to "a.c;b.c;c.c"
set(OpenCV_LIB_COMPONENTS
        opencv_videostab;
        opencv_video;
        opencv_superres;
        opencv_stitching;
        opencv_photo;
        opencv_objdetect;
        opencv_ml;
        opencv_imgproc;
        opencv_highgui;
        opencv_flann;
        opencv_features2d;
        opencv_core;
        opencv_calib3d;
        opencv_xfeatures2d;
        opencv_imgcodecs)

# This command is used to find a directory containing the named file.
# find_path (
#         <VAR>
#         name | NAMES name1 [name2 ...]
#         [HINTS path1 [path2 ... ENV var]]
#         [CMAKE_FIND_ROOT_PATH_BOTH |
#         ONLY_CMAKE_FIND_ROOT_PATH |
#         NO_CMAKE_FIND_ROOT_PATH]
# )
find_path(OpenCV_INCLUDE_DIRS NAMES opencv.h HINTS ${OpenCV_DIR}/include NO_SYSTEM_ENVIRONMENT_PATH)

set(OpenCV_LIBRARY_DIRS ${OpenCV_DIR}/lib)

FOREACH (cvcomponent ${OpenCV_LIB_COMPONENTS})
    find_library(lib_${cvcomponent} NAMES ${cvcomponent} HINTS ${OpenCV_DIR}/lib NO_DEFAULT_PATH)

    set(OpenCV_LIBRARIES ${OpenCV_LIBRARIES};${lib_${cvcomponent}})
ENDFOREACH ()

set(OpenCV_LIBS ${OpenCV_LIBRARIES})

set(OpenCV_INCLUDE_DIRS 
        ${OpenCV_INCLUDE_DIRS};
        ${OpenCV_INCLUDE_DIRS}/opencv)

if (OpenCV_INCLUDE_DIRS AND OpenCV_LIBRARIES)
    set(OpenCV_FOUND TRUE)
endif (OpenCV_INCLUDE_DIRS AND OpenCV_LIBRARIES)

if (OpenCV_FOUND)
    if (NOT OpenCV_FIND_QUIETLY)
        message(STATUS "Found OpenCV: ${OpenCV_LIBRARIES}")
    endif (NOT OpenCV_FIND_QUIETLY)
else (OpenCV_FOUND)
    if (OpenCV_FIND_REQUIRED)
        message(FATAL_ERROR "Could not find the OpenCV library")
    endif ()
endif (OpenCV_FOUND)

# 导入opencv相关的头文件
include_directories(${OpenCV_INCLUDE_DIRS})

6. 步骤6. 修改cmakelists.txt

cmake_minimum_required(VERSION 3.17)
project(studyopencv001)

set(CMAKE_CXX_STANDARD 14)

# load files under cmake directory
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}/cmake)

# find dependencies for opencv
find_package(OpenCV REQUIRED)

add_executable(studyopencv001 main.cpp)

target_link_libraries(studyopencv001 ${OpenCV_LIBS})

2. 调试验证

验证代码

#include <iostream>
#include <opencv2/opencv.hpp>


using namespace std;
//using namespace cv;

int main() {
    std::cout << "Hello, World!" << std::endl;

    cout << "OpenCV version : " << CV_VERSION << endl;
    cout << "Major version : " << CV_MAJOR_VERSION << endl;
    cout << "Minor version : " << CV_MINOR_VERSION << endl;
    cout << "Subminor version : " << CV_SUBMINOR_VERSION << endl;

    const cv::Mat &img = cv::imread("/home/jacob/CVWS/studyopencv001/img/lena.png", cv::IMREAD_COLOR);
    cv::imshow("lena", img);
    cv::waitKey(0);

    return 0;
}

验证结果
在这里插入图片描述


*. 参考

  1. Ubuntu 18.04配置OpenCV 4.2.0
  2. Linux 在图形界面复制文件目录(文件夹路径)
  3. Installation in Linux

*. 问题解决

1. 虚拟机下 ubuntu 中 clion 输入法切换失败问题(待解决)

在vmware虚拟机下,配置好的搜狗拼音输入发在clion中做中英文切换时会出现延时,有的时候会卡死clion,必须要杀死进程重启。猜测是ubuntu在虚拟机中运行时才会出现的问题,目前没有找到解决办法。

2. Failed to load module “canberra-gtk-module”

解决:安装缺失模块:sudo apt-get install libcanberra-gtk-module
参考:Failed to load module “canberra-gtk-module”


*. rough

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值