当前位置: 首页 > news >正文

OpenCV 学习记录:首篇

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

1. OpenCV 介绍与模块组成

什么是 OpenCV?

OpenCV (Open Source Computer Vision Library) 是一个开源的计算机视觉和机器学习软件库。它由 Intel 开发,旨在帮助开发人员在实时计算机视觉应用中解决各种问题。OpenCV 提供了丰富的工具和函数,能够支持图像处理、视频分析、物体检测、人脸识别、机器学习等功能,广泛应用于自动驾驶、安防监控、医学图像分析等领域。

OpenCV 主要功能

OpenCV 提供了大量的计算机视觉和图像处理工具。常见的功能包括:

  • 图像处理:图像的读取、显示、转换、增强等操作。
  • 特征提取与匹配:如SIFT、SURF、ORB等特征检测算法。
  • 目标检测与识别:如人脸检测、物体检测等。
  • 视频分析:视频流处理、运动检测、目标追踪等。
  • 机器学习:OpenCV 还包含了一些机器学习算法,如支持向量机(SVM)、K近邻(KNN)等。

OpenCV 模块组成

OpenCV 由多个模块组成,主要包括:

  1. core:基础模块,包含最基本的图像处理功能,如矩阵、图像数据结构、文件 I/O 等。
  2. imgproc:图像处理模块,提供常见的图像处理算法,如滤波、边缘检测、直方图等。
  3. imgcodecs:图像编解码模块,支持各种图像格式的读取和保存。
  4. highgui:图形用户界面模块,用于创建窗口、显示图像、读取键盘输入等。
  5. video:视频分析模块,提供视频捕获、处理和分析工具。
  6. features2d:特征提取模块,支持 SIFT、SURF、ORB 等特征检测和匹配。
  7. ml:机器学习模块,提供支持向量机(SVM)、K近邻(KNN)等常用机器学习算法。
  8. 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是浏览器可以识别的的标记语言&#xff0c;我们在浏览器浏览的网页就是一个个的html文档 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>认识html</title> </head> <body><h1…...

UE5 跟踪能力的简单小怪

A、思路 1、用素材的骨骼网格体创建小怪BP&#xff0c;绑定新的小怪控制器。 2、控制器的事件开始时&#xff0c;获取玩家状态&#xff0c;指定AI小怪自动向玩家移动。 复杂的AI需要用强大功能如黑板、行为树。 而简单的AI则可以用简单方法实现&#xff0c;杀鸡不用牛刀。视…...

Ubantu22系统安装Miniconda3

1、Anaconda和Miniconda异同 清华源镜像的Miniconda3和Anaconda都是用于管理Python环境和软件包的工具&#xff0c;但它们之间存在一些关键的不同之处。下面将分别介绍它们的特点以及使用清华源镜像的差异。 相同点&#xff1a; &#xff08;1&#xff09;功能相似&#xff1a…...

130、java中在使用new ArrayList<>(),在参数中传入一个集合的作用

在Java中&#xff0c;当你使用new ArrayList<>()时&#xff0c;你正在创建一个新的ArrayList实例。如果你在其后跟一对尖括号&#xff0c;并在内部传入一个集合&#xff0c;那么这实际上是一个"初始容量"的概念。 例如&#xff0c;如果你有一个集合otherList&…...

Mybatis-plus-Join--分页查询

数据表四张&#xff1a; user&#xff1a; id,username,create_time,update_time product&#xff1a; id,name,price,number(库存),create_time,update_times order&#xff1a; id,quantity,order_time(下单时间),update_time order_detail:id,product_id,order_id,quant…...

对BG兼并点的理解-不断刷新版

常想常新&#xff0c;每次接触都有新理解&#xff0c;不确定想的是否正确&#xff0c;拿出来讨论&#xff0c;以最新结论为准 2024-9-19 1、仿真简并点时需要断开启动电路&#xff1a;启动电路会干扰DC结果的计算&#xff0c;可能看到加启动电路后简并点减少&#xff0c;但在…...

python的游标是什么

CURSOR&#xff08;私有SQL 区&#xff09;就是一个句柄&#xff0c;即指针或引用&#xff0c;指向sql私有区&#xff08;一个用户的能打开的cursor数由参数open_cursors决定&#xff09;【确切说&#xff0c;指向sql私有区里的固定部分&#xff08;The persistentarea&#xf…...

硬件---14---PCB学习:PCB封装库及布局操作

一PCB封装元素的组成与介绍 二实例-贴片0603封装的创建 1封装命名 找不到封装库创建页面&#xff0c;可以配合右下角的Panels去找。 找到0603电阻或者电容的PCB封装&#xff0c;根据提供尺寸去设计PCB的封装。 <1>双击PCB器件封装 <2>命名 2放置焊盘&#xff…...

什么是MyBatis

MyBatis 简介 MyBatis 是一个流行的 Java 持久层框架&#xff08;Persistence Framework&#xff09;&#xff0c;它主要用于简化数据库操作&#xff0c;提供了对数据库的映射支持&#xff0c;使得开发人员能够通过简单的配置和映射文件来执行数据库操作&#xff08;如增、删、…...

开发技术-Java改变图片格式

图片上传页未做控制&#xff0c;导致上传的是GIF格式&#xff0c;导致图片识别失败。需要将GIF格式转为JPEG格式。 代码&#xff0c;是找AI写的&#xff0c;记录一下&#xff1a; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; im…...

基于DockerCompose搭建Redis主从哨兵模式

linux目录结构 内网配置 哨兵配置文件如下&#xff0c;创建3个哨兵配置文件 # sentinel26379.conf sentinel26380.conf sentinel26381.conf 内容如下 protected-mode no sentinel monitor mymaster redis-master 6379 2 sentinel down-after-milliseconds mymaster 60000 s…...

aioice里面candidate固定UDP端口测试

环境&#xff1a; aioice0.9.0 问题描述&#xff1a; aioice里面candidate固定UDP端口测试 解决方案&#xff1a; /miniconda3/envs/nerfstream/lib/python3.10/site-packages/aioice import hashlib import ipaddress import random from typing import Optional import…...

Git使用教程-分支使用/合并分支提交

Git使用教程-分支使用 文章目录 Git使用教程-分支使用一、分支&#xff08;branch&#xff09;的基本操作&#xff1a;二、查看分支&#xff1a;参考 一、分支&#xff08;branch&#xff09;的基本操作&#xff1a; git clone https://.git git status …...

单元测试使用记录

什么是单元测试 简单来说就是对一个类中的方法进行测试&#xff0c;对输出的结果检查判断是否符合预期结果 但是在多年的工作中&#xff0c;从来没有哪个项目中真正系统的用到了单元测试&#xff0c;因此对它还是很陌生的&#xff0c;也就造成更加不会在项目中区使用它。 如何…...

LabVIEW实时信号采集与频谱分析

系统通过LabVIEW与PXIe硬件结合&#xff0c;实现高精度模拟信号的实时采集、频谱分析与可视化显示。核心功能包括采样率配置、快速傅里叶变换&#xff08;FFT&#xff09;、功率谱图生成及动态缩放调整&#xff0c;同时支持信号平均与噪声抑制。系统设计灵活&#xff0c;适用于…...

OpenCV(python)从入门到精通——运算操作

加法减法操作 import cv2 as cv import numpy as npx np.uint8([250]) y np.uint8([10])x_1 np.uint8([10]) y_1 np.uint8([20])# 加法,相加最大只能为255 print(cv.add(x,y))# 减法&#xff0c;相互减最小值只能为0 print(cv.subtract(x_1,y_1))图像加法 import cv2 as…...

基础2:值类型与右值引用

1.函数返回 在讲解右值之前&#xff0c;要知道下面这个函数要进行几次拷贝以及为什么&#xff1f; int get_x() {int x 20;return x; }int aget_x(); 答案&#xff1a;两次 # 第一次 int tmpa; # 第二次 int xtmp;2.左值与右值 &#x1f34f;2.1 能取地址操作的就是左值 …...

GitHub年度报告发布!Python首次超越JavaScript

全球开发者数量激增&#xff0c;GenAI 项目呈爆炸式增长趋势&#xff0c;推动编程语言的应用格局也发生了巨大变化&#xff0c;最新的 GitHub Octoverse 报告来了&#xff01; 1、Python 首次超越 JavaScript&#xff0c;成为 GitHub 平台最顶级编程语言 不同于流传“AI 即将取…...

EdgeX Message Bus 消息总线

EdgeX Message Bus 消息总线 一、概述 EdgeX MessageBus 内部消息总线,用于 EdgeX 服务之间的内部通信。 EdgeX 服务是指来自 EdgeX 的任何核心/支持/应用程序/设备服务或使用 EdgeX SDK 构建的任何自定义应用程序或设备服务。 EdgeX MessageBus 用于内部 EdgeX 服务与服务之间…...