opencv_contrib模块安装与概述

文章目录

    • 安装
      • 下载
    • 概述
      • aruco :增强现实
      • bgsegm:背景分割
      • bioinspired:生物视觉
      • ccalib:自定义标定
      • cnn_3dobj :CNN物体识别和姿态估计
      • cvv:计算机视觉调试的交互GUI
      • datasets:数据集读取器
      • dnn_objdetect: CNNs 的物体检测模型
      • dnns_easily_fooled:欺骗CNN
      • dpm:可变型部件模型
      • face:人脸识别
      • fuzzy:视觉的模糊逻辑
      • freetype:写字
      • hdf:hdf存储
      • line_descriptor:线条匹配与提取
      • matlab
      • optflow:光流
      • ovis:3D可视化
      • plot:画图
      • reg:图像注册
      • rgbd:RGB-Depth处理模块
      • saliency:显著性
      • sfm:2D到3D的算法
      • stereo:立体匹配
      • structured_light:结构光
      • surface_matching:平面匹配
      • text:文字识别
      • tracking:目标跟踪
      • xfeatures2d: 2d特征算法
      • ximgproc:扩展的图像处理
      • xobjdetect:增强的2d物体检测
      • xphoto:额外的照片处理

安装

  • 背景交代: Ubuntu18.04 +OpenCV4.0.1+ opencv_contrib-4.0.1

下载

  • opencv-4.0.1
  • opencv_contrib-4.0.1
  • ippicv_2019_lnx_intel64_general_20180723.tgz (很慢,估计十几分钟,可以在csdn搜索,我上传百度云了)
  • face_landmark_model.dat (很慢,可以在csdn搜索,我上传百度云了)
  1. 将ippicv_2019_lnx_intel64_general_20180723.tgz 和face_landmark_model.dat 下载好,用vim将源码中3rdparty/ippicv/ippicv.cmake打开,将47行的 "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/" 修改为"file:///home/xxx/Downloads/" 注意路径修改成自己的;将opencv_contrib-4.0.1中的modules/face/CMakeLists.txt用vim打开,将19行和上面一样改成file:///home/xxx/Downloads/ ,路径都是下载上面两个文件的路径。因为cmake过程中会在github官网上下载第三方库,上面两个很慢,经常下载超时,所以手动下载比较好,其他还有几个文件,cmake用的时间不多,不用手动下载了。

  2. 打开cmake-gui ,将源码路径build的操作路径添加进去 ,点击configure ,默认即可。

opencv_contrib模块安装与概述_第1张图片
3. 在Search中输入extr找到,OPENCV_EXTRA_MODULES_PATH ,点击value后面将opencv_contrib里面的modules路径加进来,如图:在点击configure,没有错误即可,有错误继续解决。

在这里插入图片描述4. 在Seach中搜索 free, 搜到结果后面打钩,涉及到专利问题,否则在使用xfeature2d.create的时候报错。
5. 点击Generate ,会有 Generate done的字样
6. 进入 build目录,make -j8 , sudo make install ,最后include目录在/usr/local/include/opencv4下,库目录在/usr/local/lib下


  1. 测试代码

工程结构:
opencv_contrib模块安装与概述_第2张图片

#include 
#include 
 
#include 
#include 
 
using namespace cv;
using namespace std;
 
int main()
{

    Mat img = imread("../res/1.png",cv::IMREAD_COLOR);
    Ptr<Feature2D> sift = xfeatures2d::SIFT::create();
    vector<cv::KeyPoint> keypoints;
    Mat descriptors;

    sift->detectAndCompute(img, cv::noArray(),keypoints, descriptors);
    cv::drawKeypoints(img,keypoints,descriptors,cv::Scalar(0, 255, 255));
    imshow("Result", descriptors);

	waitKey();
	return 0;
}

CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
project(my_test)
set(CMAKE_CXX_FLAGS "-std=c++11")

find_package(OpenCV REQUIRED) 

include_directories(include)
aux_source_directory(src DIR_SRCS)

add_executable(my_test ${DIR_SRCS})
target_link_libraries(my_test ${OpenCV_LIBS})

opencv_contrib模块安装与概述_第3张图片


概述

aruco :增强现实

bgsegm:背景分割

  • 背景分割算法包括:统计背景图估计、像素级贝叶斯分割

bioinspired:生物视觉

  • 基于生物视觉模型:最小化噪声、亮度变化、瞬间事件分割、高动态范围色调映射方法

ccalib:自定义标定

  • 三维重建、全方向的相机标定、随机模式标定、多相机标定

cnn_3dobj :CNN物体识别和姿态估计

  • 基于Caffe深度学习框架,训练、检测物体识别和姿态的CNN模型

cvv:计算机视觉调试的交互GUI

  • 可以添加其中代码,可以在调试的时候弹出窗口进行交互,方便调试使用

datasets:数据集读取器

  • 可以用来读取现在存在的计算机视觉的数据集,也有一些案例:使用这里面的代码去读取、测试、训练

dnn_objdetect: CNNs 的物体检测模型

  • 使用简洁的CNN模型进行物体检测,使用caffe进行训练,但是使用 opencv_dnn模型进行识别

dnns_easily_fooled:欺骗CNN

  • 使用网络中的激活,去使得CNN网络识别其他物体

dpm:可变型部件模型

  • 一种目标检测的方法

face:人脸识别

  • 人脸识别的一些方法:Eigen, Fisher and LBPH(Local Binary Pattern Histograms)

fuzzy:视觉的模糊逻辑

  • 模糊逻辑图像变换、逆;模糊逻辑图像的处理

freetype:写字

  • 使用freetype and harfbuzz库在图片写字

hdf:hdf存储

  • 这个模块包含 I/O程序 对大量数据的存储

line_descriptor:线条匹配与提取

  • 基于二进制描述子的一些方法用来提取、描述、封闭图片中线条的的部分

matlab

  • MATLAB借口

optflow:光流

  • 一些运行和估计光流的算法,光流包括 deepflow、simpleflow、sparsetodenseflow、sihouette flow等

ovis:3D可视化

  • 使用OGRE 3D引擎去可视化3D数据

plot:画图

  • 简单绘制1维和2维的图

reg:图像注册

  • 像素级的图像注册-为了精准的对齐,基于论文的实现:“Image Alignment and Stitching: A Tutorial”, by Richard Szeliski.

rgbd:RGB-Depth处理模块

  • Linemod 3D物体识别,快速3D表面法线和3D平面查找、3D视觉里程计、使用 KinectFusion进行3D重建

saliency:显著性

  • 人们看着一个场景的哪里?对于 静态、运动、”没有物体的“ 的显著性是有套路的

sfm:2D到3D的算法

  • 这个模块的核心是一个轻量级的Libmv,包含一些从2D图像到3D重建的算法

stereo:立体匹配

  • 使用不同的描述子进行立体匹配:Census / CS-Census / MCT / BRIEF / MV ,和使用 Quasi 立体的方法进行稠密立体匹配

structured_light:结构光

  • 利用结构光去分析场景深度

surface_matching:平面匹配

  • 使用PPF特征进行3D物体识别和定位

text:文字识别

  • 文字检测、分离、识别

tracking:目标跟踪

xfeatures2d: 2d特征算法

  • 一些额外的实验性或者不是免费的2D特征检测、描述子的算法:SURF, SIFT, BRIEF, Censure, Freak, LUCID, Daisy, Self-similar.

ximgproc:扩展的图像处理

  • 结构森林、一些滤波器(Domain Transform Filter / Guided Filter / Adaptive Manifold Filter / Joint Bilateral Filter / Superpixels / Ridge Detection Filter)

xobjdetect:增强的2d物体检测

  • 级联检测器 : LBP+_WaldBoost

xphoto:额外的照片处理

  • 颜色均衡、降噪、图像修复

你可能感兴趣的:(opencv)