【gcc, cmake, eigen, opencv,ubuntu】四.opencv安装和使用,获取opencv matiax 的指针

文章目录

    • ubuntu系统安装opencv
      • 1.下载opencv和opencv_contrib
      • 2.安装指导
      • 3.Linux 下 fatal error: opencv2/opencv.hpp: 没有那个文件或目录
      • 4.g++ 和cmake 编译使用opencv的程序
      • 5.opencv,eigen速度比较
      • 6.opencv常用类型符号
      • 7.获取opencv matiax 的指针

ubuntu系统安装opencv

1.下载opencv和opencv_contrib

下载地址:
https://blog.csdn.net/qq_43193873/article/details/126144636
这个链接的教程是 说把 opencv_contrib放入opencv文件夹里面,然后进行编译,可能会有问题。
这里只下载好即可。

2.安装指导

如何设置编译选项,比如使用openmp编译,tbb编译,cuda等
安装参考下面链接
1OpenCV installation overview、OpenCV configuration options reference、Installation in Linux

这个教程提出 opencv_contrib 和 opencv并行。
文件夹如下格式:
【gcc, cmake, eigen, opencv,ubuntu】四.opencv安装和使用,获取opencv matiax 的指针_第1张图片

使用下面的编译指令,打开 tbb,openmp等并行库
DCMAKE_INSTALL_PREFIX 设置安装的路径,进入build

cmake ../opencv-4.6.0 /
-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.x/modules /
-DCMAKE_INSTALL_PREFIX=$HOME/opencvlib /
-DCMAKE_BUILD_TYPE=RELEASE /
-DBUILD_SHARED_LIBS=ON /
-D USE_O3=ON /
-D ENABLE_CXX11=ON /
-DWITH_TBB=ON /
-DWITH_OPENMP=ON /
-DWITH_OPENGL=OFF /
-DWITH_OPENCL=ON /
-DOPENCV_GENERATE_PKGCONFIG=ON /

接下来:
【gcc, cmake, eigen, opencv,ubuntu】四.opencv安装和使用,获取opencv matiax 的指针_第2张图片

查看当前版本

pkg-config --modversion opencv4

3.Linux 下 fatal error: opencv2/opencv.hpp: 没有那个文件或目录

命名已经安装了,为什么没有呢?
首先locate opencv看下情况:
【gcc, cmake, eigen, opencv,ubuntu】四.opencv安装和使用,获取opencv matiax 的指针_第3张图片

相关头文件位于 /usr/local/include/opencv4

因此重新创建一个软链接 到 父目录:

cd   /usr/local/include/
sudo  ln  -s   opencv4/opencv2   opencv2

4.g++ 和cmake 编译使用opencv的程序

g++ out.cpp -o out `pkg-config --cflags opencv4 --libs opencv4`

CMakeLists.txt中可以这样写:

# cmake最低版本要求
cmake_minimum_required(VERSION 3.0)
# 项目名称
project(trilinear_fast)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -march=native -fopenmp -msse -msse2 -msse3 -msse4 -mavx -O2 -DNDEBUG")
set(CMAKE_BUILD_TYPE Release)

#set(OpenCV_DIR /usr/local/lib/cmake/opencv4)
#set(OpenCV_INCLUDE_DIRS /usr/local/include/opencv4)
find_package(OpenCV REQUIRED)
include_directories(include ${OpenCV_INCLUDE_DIRS})
message(STATUS "project name = ${PROJECT_NAME}")
message(STATUS "OpenCV_LIBRARIES name = ${OpenCV_LIBRARIES}")

# 添加静态库
# add_library(testEigen STATIC testEigen/testEigen.cpp)
# 静态库testEigen的依赖的eigen头文件
# target_include_directories(testEigen PRIVATE "/usr/include/eigen3")

# 可执行文件的依赖头文件,源文件,添加可执行文件
include_directories(include ./)
file(GLOB_RECURSE SRC  ./trilinear_fast.cpp  ./lut3d.cpp)
add_executable(${PROJECT_NAME} ${SRC})

# 该可执行文件调用的静态库
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES})

其中opencv相关的主要是:

find_package(OpenCV REQUIRED)
include_directories(include ${OpenCV_INCLUDE_DIRS})

target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES})

5.opencv,eigen速度比较

https://nghiaho.com/?p=954

6.opencv常用类型符号

【gcc, cmake, eigen, opencv,ubuntu】四.opencv安装和使用,获取opencv matiax 的指针_第4张图片

7.获取opencv matiax 的指针

方法1:
float* pmat= (float*)mat_opencv.data
方法2:
float* pmat = mat_opencv.ptr(0)

你可能感兴趣的:(gcc,opencv,gcc)