OpenCV 学习记录:首篇
最近在学习机器视觉,希望能通过记录博客的形式来鞭策自己坚持学完,同时也把重要的知识点记录下来供参考学习。

1. OpenCV 介绍与模块组成
什么是 OpenCV?
OpenCV (Open Source Computer Vision Library) 是一个开源的计算机视觉和机器学习软件库。它由 Intel 开发,旨在帮助开发人员在实时计算机视觉应用中解决各种问题。OpenCV 提供了丰富的工具和函数,能够支持图像处理、视频分析、物体检测、人脸识别、机器学习等功能,广泛应用于自动驾驶、安防监控、医学图像分析等领域。
OpenCV 主要功能
OpenCV 提供了大量的计算机视觉和图像处理工具。常见的功能包括:
- 图像处理:图像的读取、显示、转换、增强等操作。
- 特征提取与匹配:如SIFT、SURF、ORB等特征检测算法。
- 目标检测与识别:如人脸检测、物体检测等。
- 视频分析:视频流处理、运动检测、目标追踪等。
- 机器学习:OpenCV 还包含了一些机器学习算法,如支持向量机(SVM)、K近邻(KNN)等。
OpenCV 模块组成
OpenCV 由多个模块组成,主要包括:
- core:基础模块,包含最基本的图像处理功能,如矩阵、图像数据结构、文件 I/O 等。
- imgproc:图像处理模块,提供常见的图像处理算法,如滤波、边缘检测、直方图等。
- imgcodecs:图像编解码模块,支持各种图像格式的读取和保存。
- highgui:图形用户界面模块,用于创建窗口、显示图像、读取键盘输入等。
- video:视频分析模块,提供视频捕获、处理和分析工具。
- features2d:特征提取模块,支持 SIFT、SURF、ORB 等特征检测和匹配。
- ml:机器学习模块,提供支持向量机(SVM)、K近邻(KNN)等常用机器学习算法。
- dnn:深度学习模块,支持通过 OpenCV 使用深度学习框架(如 Caffe、TensorFlow 等)进行推理。
2. 开发环境搭建(Python 语言)
安装 Python 和 OpenCV
在开发 OpenCV 项目之前,您需要安装 Python 和 OpenCV 库。以下是安装的详细步骤:
1. 安装 Python
如果您还没有安装 Python,可以去官方网站下载并安装:
- 官方网站:Download Python | Python.org
安装过程中建议勾选 Add Python to PATH 选项,这样可以在命令行中直接使用 python 命令。
2. 安装 OpenCV
OpenCV 提供了 Python 的接口,因此安装起来非常简单。您只需要使用 Python 的包管理工具 pip 来安装:
pip install opencv-python
如果您需要 OpenCV 的完整版本,包括一些额外的功能(如深度学习支持),可以安装:
pip install opencv-contrib-python
备注:如果您使用的是 Jupyter Notebook 或 Anaconda,可以在这些环境中使用类似的命令安装 OpenCV。
3. 安装其他依赖
对于一些高级功能(如视频捕获或图像展示),您可能还需要安装其他依赖。可以通过以下命令安装:
pip install numpy matplotlib notebook
numpy 是 OpenCV 中进行数值运算的基础库,matplotlib 可以用来在 Jupyter 中显示图像notebook可以用来执行代码并做记录。
3. 代码演示 - 读取和显示图像
接下来,我们通过代码演示,帮助您了解如何在 OpenCV 中进行基础的图像处理操作。
首先,我们需要用 cv2.imread() 读取一张图像,并用 cv2.imshow() 显示它。
示例代码:
import cv2# 读取图像
image = cv2.imread('/path/to/example.jpg') # 图像路径# 显示图像
cv2.imshow('Original Image', image)# 等待用户按键
cv2.waitKey(0)# 关闭所有窗口
cv2.destroyAllWindows()
代码解释:
cv2.imread():读取图像并返回一个 NumPy 数组。cv2.imshow():将图像显示在窗口中。cv2.waitKey(0):等待用户按下任意键关闭窗口。
总结
在本教程中,我们介绍了 OpenCV 库的基本概念和模块组成,演示了如何在 Python 环境中搭建 OpenCV 开发环境,并通过简单的代码示例展示了图像的读取和显示操作。
免费征集 | 自动化需求
还在为重复性工作头疼?数据处理耗时过长?
我们正在免费征集 自动化需求,无论是文件整理、报表生成、邮件处理还是网页爬取,只要您有需求,我愿意免费为您编写脚本,让繁琐任务一键完成!🎯 我们能帮您做什么?
文件处理:批量重命名、分类归档、数据清洗。
数据处理:Excel 自动化、报表生成、跨平台同步。
网页爬取:自动获取产品信息、市场数据或文章内容
邮件管理:自动发送邮件、下载附件、分类归档。
日常任务:自动安排日程、提醒任务、同步到项目管理工具。
其他需求:只要您想到的,我们都愿意尝试!
📩 如何提交需求?
CSDN私信或直接留言。
立即行动,释放您的生产力!
相关文章:
OpenCV 学习记录:首篇
最近在学习机器视觉,希望能通过记录博客的形式来鞭策自己坚持学完,同时也把重要的知识点记录下来供参考学习。 1. OpenCV 介绍与模块组成 什么是 OpenCV? OpenCV (Open Source Computer Vision Library) 是一个开源的计算机视觉和机器学习软…...
Java项目常见基础问题汇总
在 Feign 的实现下,我们只需创建一个接口并使用注解的方式来配置它RESTful API 与 SOAP、GraphQL 等其他 API 设计方式各有优劣,发者应根据具体业务需求选择合适的架构Dubbo开始于电商系统,大公司在OSI网络通信模型中,RPC跨越了传…...
git 删除鉴权缓存及账号信息
在Windows系统下 清除凭证管理器中的Git凭据 按下Win R键,打开“运行”对话框,输入control,然后回车,打开控制面板。在控制面板中找到“用户账户”,然后点击“凭据管理器”。在凭据管理器中,找到“Windows…...
Windows中运行Linux(WSL)
Windows Subsystem for Linux(WSL)是一个在Windows 10和更高版本上运行Linux二进制可执行文件(ELF格式)的兼容层。它允许你在Windows上直接运行Linux环境,包括大多数命令行工具、实用程序和应用程序,无需修…...
一键尺寸测量仪:磁芯尺寸测量的优选方案
由于风电、新能源汽车、机器人、工业自动化和无线充电等下游应用领域的快速发展,磁性材料行业近年来产值不断扩大,全球磁性材料市场规模在2022年突破了350亿美元,中国市场规模达800亿元人民币。特别是电子行业,无线充电技术、电感…...
[创业之路-197]:华为的发展路径启示
目录 前言: 一、由小公司走向大公司: 二、由农村包围城市: 三、由国内走向国际: 四、由代理商走向设备商,再到系统方案商,再到生态系统的搭建: 五、由随性到跟随,到赶超&#…...
【计算机网络】lab2 Ethernet(链路层Ethernet frame结构细节)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀计算机网络_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2.…...
路径规划之启发式算法之二十:麻雀搜索算法(Sparrow Search Algorithm,SSA)
麻雀搜索算法(Sparrow Search Algorithm,SSA)是一种受麻雀觅食和反捕食行为启发的新型的群智能优化算法,它模拟了麻雀种群的觅食行为和反捕食行为的生物学群体特征。该算法由薛建凯在2020年首次提出,旨在解决全局优化问题,具有求解精度高、效率高等特点。 一、算法原理 S…...
音频开发中常见的知识体系
在 Linux 系统中,/dev/snd 目录包含与声音设备相关的文件。每个文件代表系统中的一部分音频硬件或音频控制接口。以下是你列出的文件及其含义: 一.基本术语 样本长度(sample):样本是记录音频数据最基本的单位,计算机对每个通道采…...
【返璞归真】score检验:似然比的得分检验(Likelihood Ratio Score Test)
Score检验(Score Test)是一种用于假设检验的方法,特别是在统计建模中,常用于估计模型参数时检验某个假设是否成立。它的全名是“似然比的得分检验”(Likelihood Ratio Score Test),通常用于大样…...
三维重建(六)——3D Representation Methods: A Survey(北大总结三维表征--2024.10出版)
文章目录 一、摘要二、引言2.1 研究焦点和发展历程三、3D表征3.1 体素网格3.2 点云3.3 网格3.4 符号距离函数(SDF)3.5 神经辐射场(NeRF)3.6 三维高斯溅射(3D Gaussian Splatting, 3DGS)3.7 混合方法3.7.1 深度步进四面体(Deep Marching Tetrahedra, DMTet)3.7.2 三平面…...
html基础-认识html
1.什么是html html是浏览器可以识别的的标记语言,我们在浏览器浏览的网页就是一个个的html文档 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>认识html</title> </head> <body><h1…...
UE5 跟踪能力的简单小怪
A、思路 1、用素材的骨骼网格体创建小怪BP,绑定新的小怪控制器。 2、控制器的事件开始时,获取玩家状态,指定AI小怪自动向玩家移动。 复杂的AI需要用强大功能如黑板、行为树。 而简单的AI则可以用简单方法实现,杀鸡不用牛刀。视…...
Ubantu22系统安装Miniconda3
1、Anaconda和Miniconda异同 清华源镜像的Miniconda3和Anaconda都是用于管理Python环境和软件包的工具,但它们之间存在一些关键的不同之处。下面将分别介绍它们的特点以及使用清华源镜像的差异。 相同点: (1)功能相似:…...
130、java中在使用new ArrayList<>(),在参数中传入一个集合的作用
在Java中,当你使用new ArrayList<>()时,你正在创建一个新的ArrayList实例。如果你在其后跟一对尖括号,并在内部传入一个集合,那么这实际上是一个"初始容量"的概念。 例如,如果你有一个集合otherList&…...
Mybatis-plus-Join--分页查询
数据表四张: user: id,username,create_time,update_time product: id,name,price,number(库存),create_time,update_times order: id,quantity,order_time(下单时间),update_time order_detail:id,product_id,order_id,quant…...
对BG兼并点的理解-不断刷新版
常想常新,每次接触都有新理解,不确定想的是否正确,拿出来讨论,以最新结论为准 2024-9-19 1、仿真简并点时需要断开启动电路:启动电路会干扰DC结果的计算,可能看到加启动电路后简并点减少,但在…...
python的游标是什么
CURSOR(私有SQL 区)就是一个句柄,即指针或引用,指向sql私有区(一个用户的能打开的cursor数由参数open_cursors决定)【确切说,指向sql私有区里的固定部分(The persistentarea…...
硬件---14---PCB学习:PCB封装库及布局操作
一PCB封装元素的组成与介绍 二实例-贴片0603封装的创建 1封装命名 找不到封装库创建页面,可以配合右下角的Panels去找。 找到0603电阻或者电容的PCB封装,根据提供尺寸去设计PCB的封装。 <1>双击PCB器件封装 <2>命名 2放置焊盘ÿ…...
什么是MyBatis
MyBatis 简介 MyBatis 是一个流行的 Java 持久层框架(Persistence Framework),它主要用于简化数据库操作,提供了对数据库的映射支持,使得开发人员能够通过简单的配置和映射文件来执行数据库操作(如增、删、…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
