opencv contrib

https://github.com/opencv/opencv_contrib/releases/tag/4.5.5

opencv

https://github.com/opencv/opencv/releases/tag/4.5.5

OpenCV是一个开源的计算机视觉库,提供了许多图像处理和计算机视觉算法,以及一些机器学习工具。而OpenCV Contrib是OpenCV社区贡献的一组扩展模块,包含了一些较为新颖和实用的算法和工具函数。

OpenCV库包含了核心模块和扩展模块。核心模块提供了一些基础的图像处理和计算机视觉算法,如图像读取和保存、图像预处理、特征检测和匹配、物体跟踪等。扩展模块则提供了一些高级的图像处理和计算机视觉算法,如人脸识别、物体检测、深度学习等。而OpenCV Contrib是OpenCV的扩展模块之一,它包含了一些实用的算法和工具函数,如光流、分割、双目视觉、三维重建等。

在使用OpenCV时,如果需要使用OpenCV Contrib中的算法或工具函数,需要单独安装并编译OpenCV Contrib模块。OpenCV Contrib模块的安装方法取决于你使用的操作系统和编译器,具体可以参考OpenCV官方文档。

以下是一个示例代码,演示了如何使用OpenCV Contrib中的一个算法:

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

using namespace std;
using namespace cv;
using namespace cv::xfeatures2d;

int main()
{
    // 读取图像
    Mat img1 = imread("img1.jpg");
    Mat img2 = imread("img2.jpg");

// 创建SIFT特征检测器
    Ptr<SIFT> detector = SIFT::create();

// 检测关键点和计算描述子
    vector<KeyPoint> keypoints1, keypoints2;
    Mat descriptors1, descriptors2;
    detector->detectAndCompute(img1, Mat(), keypoints1, descriptors1);
    detector->detectAndCompute(img2, Mat(), keypoints2, descriptors2);

// 匹配关键点
    BFMatcher matcher(NORM_L2);
    vector<vector<DMatch>> knn_matches;
    matcher.knnMatch(descriptors1, descriptors2, knn_matches, 2);

// 筛选匹配结果
    vector<DMatch> good_matches;
    for (int i = 0; i < knn_matches.size(); i++) {
        if (knn_matches[i][0].distance < 0.7 * knn_matches[i][1].distance) {
            good_matches.push_back(knn_matches[i][0]);
        }
    }

// 绘制匹配结果
    Mat img_matches;
    drawMatches(img1, keypoints1, img2, keypoints2, good_matches, img_matches);

// 显示匹配结果
    namedWindow("Matches", WINDOW_NORMAL);
    imshow("Matches", img_matches);
    waitKey(0);

return 0;
}

OpenCV和OpenCV Contrib的主要区别是OpenCV Contrib包含了一些不是在OpenCV核心库中实现的功能,例如深度学习框架的支持、面部识别、三维重建等等。这些功能都是通过OpenCV的插件方式实现的,因此需要单独安装。

使用OpenCV时,可以使用cv2模块来调用核心功能,例如图像读取、显示、处理、特征提取等。使用OpenCV Contrib时,需要先安装OpenCV Contrib扩展,并使用cv2.contrib模块来调用其功能。

下面是一个简单的示例代码,展示了如何使用OpenCV和OpenCV Contrib加载并显示一张图像:

import cv2
import cv2.contrib

# 加载图像
img = cv2.imread('test.jpg')

# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 使用OpenCV Contrib中的DNN模块加载深度学习模型
net = cv2.contrib.dnn.readNet('model.pb')

# 对图像进行目标检测
blob = cv2.dnn.blobFromImage(img, scalefactor=1/255.0, size=(416, 416), swapRB=True, crop=False)
net.setInput(blob)
outs = net.forward()

在这个示例代码中,我们首先使用OpenCV的imread函数加载了一张图像,并使用imshow函数显示了该图像。接下来,我们使用OpenCV Contrib中的dnn模块加载了一个深度学习模型,并使用该模型对图像进行了目标检测。

需要注意的是,如果想要使用OpenCV Contrib中的功能,需要在安装OpenCV时选择安装Contrib模块,或者单独安装OpenCV Contrib扩展。

opencv opencv contrib相关推荐

  1. 为opencv添加contrib库

    自从进入3.X时代以后,OpenCV将代码库分成了两部分,分别是稳定的核心功能库和试验性质的contrib库,之前已经讲过opencv的核心库的安装,现在讲解一下其附带的依赖库的安装. 一.Cmake ...

  2. Linux下编译Opencv和contrib

    1. 安装准备 1.1 安装依赖项 sudo apt-get install cmake sudo apt-get install build-essential libgtk2.0-dev liba ...

  3. OpenCV安装教程:Windows 安装 Visual Studio + OpenCV + OpenCV contrib

    目录 0.写作背景 1.安装visual studio 2.下载OpenCV相关的源码 下载OpenCV原始的源码 下载OpenCV contrib的源码 下载安装cmake 3.cmake编译Ope ...

  4. (翻译)在Y分钟学X:OpenCV (OpenCV入门)(中文注释)

    内容来自于Learn X in Y Minutes: Scenic Programming Language Tours 一些opencv的基础使用方法,图形绘制,边缘检测,人像识别等. 对文档中的英 ...

  5. openCV OpenCV Manager package was not found! Try to install it? 问题记录

    首先说一点我用的是比较新的opencv版本. 回到正题,为啥会出现这个问题呢,先看几段代码. @Overrideprotected void onResume() {super.onResume(); ...

  6. OpenCV + OpenCV Contrib安装教程(windows)

    一.OpenCV Contrib模块简介 OpenCV Contrib是OpenCV的扩展模块,包含了许多最新的以及可能还没有正式发布有待进一步完善的算法,可以理解为是OpenCV的扩展包,在Open ...

  7. 交叉编译Opencv带Contrib

    常见错误: 1.无法解决 R_AARCH64_ADR_PREL_PG_HI21 重定向于符号 "_ZNSt8ios_base7failureB5cxx11D1Ev@@GLIBCXX_3.4. ...

  8. 一句话满速下载清华源3.4.1.15版本的opencv和contrib库

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python==3.4.1.15 pip install -i https ...

  9. opencv——opencv配置选项详解

    一.介绍 1.OpenCV (Open Source Computer Vision Library) is released under a BSD license and hence it's f ...

最新文章

  1. c++中的auto关键字
  2. thinkphp 调用php文件上传,ThinkPHP实现带验证码的文件上传功能实例
  3. 百度地图的立体效果来实现
  4. 数学建模——层次分析法Python代码
  5. 前 K 个高频元素—leetcode347
  6. openstack cluster 封装
  7. Redis都不懂?就别去面试了!聊聊我的Redis新专栏「视频版」
  8. 180接线_工程人必备:180页建筑机电安装标准做法图集,限领三天手慢无
  9. 谷歌终于推出TensorFlow Lite,实现在移动设备端部署AI
  10. 虚拟机nas服务器,VMware虚拟机搭建安装黑群晖NAS服务器
  11. Android apk签名-apksigner签名工具
  12. 嗨,你真的懂this吗?bianji
  13. mysql命令分号_MySql常用命令:注意命令后面的分号!
  14. tds for mysql_PostgreSQL9.3安装tds_fdw扩展
  15. scandef格式详细说明
  16. Bluetooth sco协议录音
  17. 【Fiddle】The Fiddler AutoResponder is enabled, but this request did not match any of the listed rules
  18. word中目录出现省略号疏密不一致
  19. LeetCode——字符串的最大公因子
  20. 几种代表性的相控阵系统简介

热门文章

  1. 阿里云大数据认证——机器学习PAI实现精细化营销-课堂笔记
  2. 产品经理知识体系:6.如何做好产品运营?
  3. Spring框架编译报could not resolve plugin artifact io.spring.dependency-management
  4. 【漏洞复现-Discuz-代码执行】Discuz_CVE-2019-13956
  5. 2022年上海市徐汇区创新型中小企业名单公示
  6. Vue开发中的一些常见套路和技巧(上)
  7. C实现三子棋 人机对弈
  8. php实现tcp连接esp8266,【零知ESP8266教程】WIFI TCP协议通信 TCP客户端示例
  9. 君子签区块链电子合同助力二手车异地交易签约、档案管理全面电子化
  10. 计算机架构设计的8个伟大思想