opencv opencv contrib
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相关推荐
- 为opencv添加contrib库
自从进入3.X时代以后,OpenCV将代码库分成了两部分,分别是稳定的核心功能库和试验性质的contrib库,之前已经讲过opencv的核心库的安装,现在讲解一下其附带的依赖库的安装. 一.Cmake ...
- Linux下编译Opencv和contrib
1. 安装准备 1.1 安装依赖项 sudo apt-get install cmake sudo apt-get install build-essential libgtk2.0-dev liba ...
- OpenCV安装教程:Windows 安装 Visual Studio + OpenCV + OpenCV contrib
目录 0.写作背景 1.安装visual studio 2.下载OpenCV相关的源码 下载OpenCV原始的源码 下载OpenCV contrib的源码 下载安装cmake 3.cmake编译Ope ...
- (翻译)在Y分钟学X:OpenCV (OpenCV入门)(中文注释)
内容来自于Learn X in Y Minutes: Scenic Programming Language Tours 一些opencv的基础使用方法,图形绘制,边缘检测,人像识别等. 对文档中的英 ...
- openCV OpenCV Manager package was not found! Try to install it? 问题记录
首先说一点我用的是比较新的opencv版本. 回到正题,为啥会出现这个问题呢,先看几段代码. @Overrideprotected void onResume() {super.onResume(); ...
- OpenCV + OpenCV Contrib安装教程(windows)
一.OpenCV Contrib模块简介 OpenCV Contrib是OpenCV的扩展模块,包含了许多最新的以及可能还没有正式发布有待进一步完善的算法,可以理解为是OpenCV的扩展包,在Open ...
- 交叉编译Opencv带Contrib
常见错误: 1.无法解决 R_AARCH64_ADR_PREL_PG_HI21 重定向于符号 "_ZNSt8ios_base7failureB5cxx11D1Ev@@GLIBCXX_3.4. ...
- 一句话满速下载清华源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 ...
- opencv——opencv配置选项详解
一.介绍 1.OpenCV (Open Source Computer Vision Library) is released under a BSD license and hence it's f ...
最新文章
- c++中的auto关键字
- thinkphp 调用php文件上传,ThinkPHP实现带验证码的文件上传功能实例
- 百度地图的立体效果来实现
- 数学建模——层次分析法Python代码
- 前 K 个高频元素—leetcode347
- openstack cluster 封装
- Redis都不懂?就别去面试了!聊聊我的Redis新专栏「视频版」
- 180接线_工程人必备:180页建筑机电安装标准做法图集,限领三天手慢无
- 谷歌终于推出TensorFlow Lite,实现在移动设备端部署AI
- 虚拟机nas服务器,VMware虚拟机搭建安装黑群晖NAS服务器
- Android apk签名-apksigner签名工具
- 嗨,你真的懂this吗?bianji
- mysql命令分号_MySql常用命令:注意命令后面的分号!
- tds for mysql_PostgreSQL9.3安装tds_fdw扩展
- scandef格式详细说明
- Bluetooth sco协议录音
- 【Fiddle】The Fiddler AutoResponder is enabled, but this request did not match any of the listed rules
- word中目录出现省略号疏密不一致
- LeetCode——字符串的最大公因子
- 几种代表性的相控阵系统简介
热门文章
- 阿里云大数据认证——机器学习PAI实现精细化营销-课堂笔记
- 产品经理知识体系:6.如何做好产品运营?
- Spring框架编译报could not resolve plugin artifact io.spring.dependency-management
- 【漏洞复现-Discuz-代码执行】Discuz_CVE-2019-13956
- 2022年上海市徐汇区创新型中小企业名单公示
- Vue开发中的一些常见套路和技巧(上)
- C实现三子棋 人机对弈
- php实现tcp连接esp8266,【零知ESP8266教程】WIFI TCP协议通信 TCP客户端示例
- 君子签区块链电子合同助力二手车异地交易签约、档案管理全面电子化
- 计算机架构设计的8个伟大思想