opencv中的常用的100个API

以下是 OpenCV 中常用的 100 个 API,这些 API 涉及图像读取、处理、特征提取、绘图、视频处理等常见操作:


1. 图像操作

  1. cv2.imread(filename, flags) - 读取图像。
  2. cv2.imwrite(filename, img) - 保存图像。
  3. cv2.imshow(window_name, img) - 显示图像。
  4. cv2.cvtColor(src, code) - 转换图像颜色空间。
  5. cv2.resize(src, dsize, fx, fy, interpolation) - 缩放图像。
  6. cv2.rotate(src, rotateCode) - 旋转图像。
  7. cv2.flip(src, flipCode) - 翻转图像。
  8. cv2.split(src) - 拆分通道。
  9. cv2.merge(mv) - 合并通道。
  10. cv2.copyMakeBorder(src, top, bottom, left, right, borderType, value) - 添加边框。

2. 图像变换

  1. cv2.warpAffine(src, M, dsize) - 仿射变换。
  2. cv2.getAffineTransform(srcPoints, dstPoints) - 获取仿射变换矩阵。
  3. cv2.warpPerspective(src, M, dsize) - 透视变换。
  4. cv2.getPerspectiveTransform(srcPoints, dstPoints) - 获取透视变换矩阵。
  5. cv2.remap(src, map1, map2, interpolation) - 重映射。
  6. cv2.resize(src, dsize) - 调整大小。
  7. cv2.getRotationMatrix2D(center, angle, scale) - 获取旋转矩阵。
  8. cv2.invertAffineTransform(M) - 仿射矩阵求逆。
  9. cv2.convertScaleAbs(src, alpha, beta) - 调整对比度和亮度。
  10. cv2.normalize(src, dst, alpha, beta, norm_type) - 归一化。

3. 绘图功能

  1. cv2.line(img, pt1, pt2, color, thickness) - 画线。
  2. cv2.rectangle(img, pt1, pt2, color, thickness) - 画矩形。
  3. cv2.circle(img, center, radius, color, thickness) - 画圆。
  4. cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness) - 画椭圆。
  5. cv2.polylines(img, pts, isClosed, color, thickness) - 画多边形。
  6. cv2.fillPoly(img, pts, color) - 填充多边形。
  7. cv2.putText(img, text, org, fontFace, fontScale, color, thickness) - 添加文本。

4. 图像阈值

  1. cv2.threshold(src, thresh, maxval, type) - 图像二值化。
  2. cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C) - 自适应阈值。
  3. cv2.inRange(src, lowerb, upperb) - 范围筛选。

5. 图像平滑与滤波

  1. cv2.blur(src, ksize) - 均值滤波。
  2. cv2.GaussianBlur(src, ksize, sigmaX) - 高斯滤波。
  3. cv2.medianBlur(src, ksize) - 中值滤波。
  4. cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace) - 双边滤波。
  5. cv2.filter2D(src, ddepth, kernel) - 任意核卷积。

6. 边缘检测与轮廓

  1. cv2.Canny(image, threshold1, threshold2) - 边缘检测。
  2. cv2.findContours(image, mode, method) - 查找轮廓。
  3. cv2.drawContours(image, contours, contourIdx, color, thickness) - 绘制轮廓。
  4. cv2.arcLength(contour, closed) - 计算轮廓周长。
  5. cv2.contourArea(contour) - 计算轮廓面积。
  6. cv2.approxPolyDP(curve, epsilon, closed) - 多边形逼近。
  7. cv2.boundingRect(points) - 计算矩形边界。
  8. cv2.minEnclosingCircle(points) - 最小包围圆。
  9. cv2.convexHull(points) - 凸包。
  10. cv2.isContourConvex(contour) - 判断是否为凸形。

7. 形态学操作

  1. cv2.erode(src, kernel, iterations) - 腐蚀。
  2. cv2.dilate(src, kernel, iterations) - 膨胀。
  3. cv2.morphologyEx(src, op, kernel) - 形态学操作(开闭运算等)。
  4. cv2.getStructuringElement(shape, ksize) - 获取结构元素。

8. 图像直方图

  1. cv2.calcHist(images, channels, mask, histSize, ranges) - 计算直方图。
  2. cv2.equalizeHist(src) - 直方图均衡化。
  3. cv2.createCLAHE(clipLimit, tileGridSize) - 自适应直方图均衡化。

9. 特征检测与描述

  1. cv2.SIFT_create() - SIFT特征检测。
  2. cv2.ORB_create() - ORB特征检测。
  3. cv2.FastFeatureDetector_create() - FAST特征检测。
  4. cv2.MSER_create() - MSER特征检测。
  5. cv2.BRISK_create() - BRISK特征检测。
  6. cv2.SimpleBlobDetector_create() - 简单Blob检测。
  7. cv2.goodFeaturesToTrack(src, maxCorners, qualityLevel, minDistance) - 检测角点。

10. 特征匹配

  1. cv2.BFMatcher(normType) - 暴力匹配器。
  2. cv2.FlannBasedMatcher() - FLANN匹配器。
  3. cv2.drawMatches(img1, kp1, img2, kp2, matches, outImg) - 绘制匹配结果。

11. 视频操作

  1. cv2.VideoCapture(source) - 打开视频文件或摄像头。
  2. cv2.VideoWriter(filename, fourcc, fps, frameSize) - 保存视频。
  3. cap.read() - 读取视频帧。
  4. cap.isOpened() - 检查视频是否打开。
  5. cap.release() - 释放视频资源。

12. 几何变换与数学操作

  1. cv2.addWeighted(src1, alpha, src2, beta, gamma) - 图像加权。
  2. cv2.bitwise_and(src1, src2) - 按位与。
  3. cv2.bitwise_or(src1, src2) - 按位或。
  4. cv2.bitwise_not(src) - 按位取反。
  5. cv2.bitwise_xor(src1, src2) - 按位异或。
  6. cv2.minMaxLoc(src) - 最值定位。
  7. cv2.reduce(src, dim, rtype) - 归约操作。

13. 模板匹配

  1. cv2.matchTemplate(image, templ, method) - 模板匹配。
  2. cv2.minMaxLoc(result) - 获取匹配位置。

14. 深度学习相关

  1. cv2.dnn.readNetFromCaffe(protoTxt, model) - 读取Caffe模型。
  2. cv2.dnn.readNetFromTensorflow(model, config) - 读取TensorFlow模型。
  3. cv2.dnn.readNetFromONNX(model) - 读取ONNX模型。
  4. cv2.dnn.blobFromImage(image, scalefactor, size, mean, swapRB, crop) - 图像转换为深度学习输入。

15. 基本工具

  1. cv2.waitKey(delay) - 等待键盘输入。
  2. cv2.destroyAllWindows() - 销毁所有窗口。
  3. cv2.getTickCount() - 获取时间戳。
  4. cv2.getTickFrequency() - 获取时间频率。
  5. cv2.setMouseCallback(window_name, callback) - 设置鼠标回调。

16. 深入功能

  1. cv2.calcOpticalFlowFarneback(prev, next, flow, pyrScale, levels, winsize, iterations, polyN, polySigma, flags) - 光流计算。
  2. cv2.cornerHarris(src, blockSize, ksize, k) - Harris角点检测。
  3. cv2.cornerSubPix(image, corners, winSize, zeroZone, criteria) - 亚像素角点优化。

17. 自定义与扩展

  1. cv2.getTrackbarPos(trackbarname, winname) - 获取滑块值。
  2. cv2.createTrackbar(trackbarname, winname, value, count, onChange) - 创建滑块。
  3. cv2.fillConvexPoly(img, points, color) - 填充凸多边形。
  4. cv2.fillPoly(img, pts, color) - 填充多边形。

18. 图像与视频编码解码

  1. cv2.imencode(ext, img) - 编码图像。
  2. cv2.imdecode(buf, flags) - 解码图像。
  3. cv2.VideoWriter_fourcc(c1, c2, c3, c4) - 获取视频编码器。

19. 其他实用功能

  1. cv2.phase(x, y) - 计算幅角。
  2. cv2.cartToPolar(x, y) - 笛卡尔坐标到极坐标转换。
  3. cv2.polarToCart(magnitude, angle) - 极坐标到笛卡尔坐标转换。
  4. cv2.kmeans(data, K, bestLabels, criteria, attempts, flags) - KMeans 聚类。
  5. cv2.connectedComponents(image) - 连通域分析。

总结

以上 100 个 OpenCV API 覆盖了 OpenCV 的主要功能模块,帮助开发者快速理解 OpenCV 的强大功能。在实际使用中,可以根据需求查阅官方文档获取更多详细信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/941976.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高强度螺栓等级划分

高强度螺栓的等级划分主要依据其性能等级,常见的等级有8.8级和10.9级。这些等级标号由两部分数字组成,分别表示螺栓材料的公称抗拉强度值和屈强比值。 8.8级高强度螺栓:表示螺栓杆的抗拉强度不小于800MPa,屈强比(屈服强…

【VMware虚拟机】安装win10系统教程双机可ping通

目录 1、下载1.1、点击链接下载媒体创建工具:1.2、下载后得到MediaCreationTool_22H2.exe:1.3、获取ISO镜像 2、安装3、显示4、配置网络4.1、配置4.2、排查4.2.1、关闭防火墙4.2.2、增加路由 1、下载 Windows10微软官网下载链接: https://www.microsoft…

Jetson xavier 刷机安装教程

在对Jetson进行刷机过程,浏览了很多的相关教程,大部分教程并不全,而且按照步骤执行会出现许多奇奇怪怪的错误,为了避免大家踩坑,这里给出了完整的解决方法,希望能够提供帮助! 首先大家需要准备…

41 stack类与queue类

目录 一、简介 (一)stack类 (二)queue类 二、使用与模拟实现 (一)stack类 1、使用 2、OJ题 (1)最小栈 (2)栈的弹出压入序列 (3&#xf…

申请腾讯混元的API Key并且使用LobeChat调用混元AI

申请腾讯混元的API Key并且使用LobeChat调用混元AI 之前星哥写了一篇文章《手把手教拥有你自己的大模型ChatGPT和Gemini等应用-开源lobe-chat》搭建的开源项目,今天这篇文章教大家如何添加腾讯云的混元模型,并且使用LobeChat调用腾讯混元AI。 申请腾讯混…

物理层知识要点

文章目录 物理层接口的四大特性通信基础编码和调制(1)数字数据编码为数字信号(2)模拟数据编码为数字信号(3)常见调制方式(3)信道的极限容量 多路复用技术数据传输方式物理层下的传输…

第十五章 C++ 数组

C 支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。 数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声…

LabVIEW开发需要懂那些数学知识?

LabVIEW开发是一种图形化编程方法,广泛应用于工程和科学领域。在开发过程中,数学知识是不可或缺的,它不仅是分析和设计复杂系统的基础,还能提升开发效率和系统性能。下面将从应用需求、案例分析、介绍LabVIEW开发中所需的数学知识…

QT的前景与互联网岗位发展

qt是用来干什么的 --》桌面应用开发(做电脑的应用程序,面对客户端)。 主要用于开发跨平台的应用程序和用户界面(UI)。它是一个全面的C库集合,提供了构建软件应用所需的各种工具和功能。 客户端开发的重…

奇异值分解在图像压缩中的应用

奇异值分解(SVD)定理 奇异值矩阵 和A的大小相同都是mn主对角线元素:从大到小排列,称为奇异值其他位置0 例: 在这里,第1个矩阵和第3个矩阵为正交矩阵 中间的矩阵奇异值矩阵,奇异值7.7&#xf…

【vue】圆环呼吸灯闪烁效果(模拟扭蛋机出口处灯光)

效果图先发&#xff1a; 页面部分&#xff1a; <div ref"round" class"round"><div class"light" ref"light"/><div class"box"></div></div>js部分(控制圆环生成&#xff09;; setRound…

Python(二)str、list、tuple、dict、set

string name abcdefprint(name[0]) #a # 切片&#xff1a;取部分数据 print(name[0:3]) # 取 下标为0,1,2的字符 abc print(name[2:]) # 取 下标为2开始到最后的字符 cdef print(name…

EasyExcel停更,FastExcel接力

11月6日消息&#xff0c;阿里巴巴旗下的Java Excel工具库EasyExcel近日宣布&#xff0c;将停止更新&#xff0c;未来将逐步进入维护模式&#xff0c;将继续修复Bug&#xff0c;但不再主动新增功能。 EasyExcel以其快速、简洁和解决大文件内存溢出的能力而著称&#xff0c;官方…

项目实战——高并发内存池

一.项目介绍 本项目——高并发内存池&#xff0c;是通过学习并模仿简化 google 的一个开源项目 tcmalloc &#xff0c;全称 Thread-Caching Malloc&#xff0c;即线程缓存的malloc&#xff0c;模拟实现了一个自己的高并发内存池&#xff0c;用于高效的多线程内存管理&#xff…

结合实例从HCI层分析经典蓝牙连接和配对过程

我们知道&#xff0c;经典蓝牙BREDR的link key协商是在LMP层做的&#xff0c;那么蓝牙Host在鉴权的过程中&#xff0c;会跟BT SOC有哪些交互&#xff1a; 首次配对 在HCI Inuqiry找到想要配对的设备后&#xff0c;Host会调用HCI Create Connection命令去连接对方设备&#xf…

java全栈day20--Web后端实战(Mybatis基础2)

一、Mybatis基础 1.1辅助配置 配置 SQL 提示。 默认在 mybatis 中编写 SQL 语句是不识别的。可以做如下配置&#xff1a; 现在就有sql提示了 新的问题 产生原因&#xff1a; Idea 和数据库没有建立连接&#xff0c;不识别表信息 解决方式&#xff1a;在 Idea 中配置 MySQL 数…

RK356x-11:在win11的WSL中开发SDK

我拿到的SDK建议开发的系统是Ubuntu22.04&#xff08;在SDK-docs中的文档有说明&#xff09;&#xff0c;因此&#xff0c;WSL中要先安装好它。由于PC机上WSL本身不支持aarch64架构&#xff0c;所以&#xff0c;进行ARM64的RK356X开发&#xff0c;需要手动加入支持。用到的支持…

【unity c#】深入理解string,以及不同方式构造类与反射的性能测试(基于BenchmarkDotNet)

出这篇文章的主要一个原因就是ai回答的性能差异和实际测试完全不同&#xff0c;比如说是先获取构造函数再构造比Activator.CreateInstance(type)快&#xff0c;实际却相反 对测试结果的评价基于5.0&#xff0c;因为找不到unity6确切使用的net版本&#xff0c;根据c#9推测是net5…

qemu 共享内存设备——ivshmem

文章目录 背景简单使用参考 背景 vshmem是QEMU提供的一种宿主机与虚拟机之间或多个虚拟机之间共享内存的特殊设备。它有两种形式: ivshmem-plain: 简单的共享内存区域ivshmem-doorbel: 除了共享内存&#xff0c;还能提供基于中断的通信机制 这种设备在虚拟机内部表现为PCI设…

dolphinscheduler服务注册中心源码解析(三)RPC提供者服务整合注册中心注册服务实现源码

RPC提供者服务整合注册中心注册服务实现源码 1.概述2.源码解读思路3.实现2.1.应用服务的RPC服务接口定义2.1.1.MasterServer应用中提供的RPC接口服务2.1.2.WorkerServer应用中提供的RPC接口服务2.2.应用服务的RPC服务接口实现2.2.1.MasterServer应用中提供的RPC接口服务实现类2…