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

机器视觉与OpenCV--01篇

计算机眼中的图像

像素

像素是图像的基本单位,每个像素存储着图像的颜色、亮度或者其他特征,一张图片就是由若干个像素组成的。

RGB

在计算机中,RGB三种颜色被称为RGB三通道,且每个通道的取值都是0到255之间。

计算机中图像的存储

我们要先弄清楚图像如何在计算机中存储,才能去很好的操作它们。在计算机中,图像的存储都是以【数组】的形式存在的。

一个RGB图像,其实就是一个三维数组,第一维度存【高度】,第二维度存【宽度】,第三维度存【颜色通道】。

注意一点:OpenCV中颜色存储不是RGB,而是BGR。

下面通过示例来解析三原色

对下面的 image 图像进行单元色分离,得出image_red、image_green和image_blue。

 方法一:

import numpy as np
import matplotlib.pyplot as plt#创建三维全 0 数组
img = np.zeros((700,700,3),dtype=np.uint8)for i in range(0,700,100):for j in range(0,700,100):img[i,:,:] = (255,255,255)img[:,j,:] = (255,255,255 )if i!=0 and j!=0 and i!=600 and j!=600 and (i==j or i+j==600):img[i:i+100,j:j+100,:] = (255,0,0)#创建三通道图
img_red = np.zeros((700,700,3),dtype=np.uint8)
img_green = np.zeros((700,700,3),dtype=np.uint8)
img_blue = np.zeros((700,700,3),dtype=np.uint8)#分离原图三原色
R = img[:,:,0]
G = img[:,:,1]
B = img[:,:,2]#三原色赋值三通道
img_blue[:,:,0] = B
img_green[:,:,1] = G
img_red[:,:,2] = Rplt.subplot(232)
plt.imshow(img)
plt.subplot(234)
plt.imshow(img_red)
plt.subplot(235)
plt.imshow(img_green)
plt.subplot(236)
plt.imshow(img_blue)plt.show()

  方法二:

import cv2
import numpy as np# cv2.imshow()        #显示由cv2.imread()读取的图像
# cv2.rectangle()     #绘制矩形
# cv2.waitKey()       #用于用户等待时间,设置为0,表示无限等待
# cv2.split()         #用于分隔图像img = np.zeros((700,700,3),dtype=np.uint8)for i in range(0,700,100):for j in range(0,700,100):top_left = (j,i)bottom_right = (j+100-1,i+100-1)if i!=0 and j!=0 and i!=600 and j!=600 and (i==j or i+j==600):cv2.rectangle(img,top_left,bottom_right,(0,0,255),-1)else:cv2.rectangle(img,top_left,bottom_right,(255,255,255),2)#创建三通道图
img_red = np.zeros((700,700,3),dtype=np.uint8)
img_green = np.zeros((700,700,3),dtype=np.uint8)
img_blue = np.zeros((700,700,3),dtype=np.uint8)#分离原图三原色
B,G,R= cv2.split(img)#三原色赋值三通道
img_blue[:,:,0] = B
img_green[:,:,1] = G
img_red[:,:,2] = Rcv2.imshow('image',img)
cv2.imshow('image_blue',img_blue)
cv2.imshow('image_green',img_green)
cv2.imshow('image_red',img_red)
cv2.waitKey(0)

OpenCV介绍

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它包含了众多关于图像处理和计算机视觉的通用算法,这些算法可以用于解决各种实际问题,比如人脸识别、物体检测、图像分割、视频分析等。OpenCV 提供了 C++、Python、Java 和 MATLAB 等多种语言的接口,其中 Python 接口由于其简洁性和易用性而特别受欢迎。

以下是 OpenCV Python 的一些关键特性和用途:

关键特性

  1. ‌丰富的功能‌:OpenCV 提供了大量的图像处理函数,包括滤波、边缘检测、形态学操作、图像变换、特征检测与匹配、相机标定与三维重建等。
  2. ‌高性能‌:OpenCV 是用 C++ 编写的,并进行了高度优化,因此在处理大规模图像数据时具有很高的性能。Python 接口通过调用底层的 C++ 实现来保持高效性。
  3. ‌跨平台‌:OpenCV 可以在多种操作系统上运行,包括 Windows、Linux、macOS 和 Android 等。
  4. ‌易于使用‌:OpenCV 的 Python 接口设计直观,易于学习和使用。同时,OpenCV 还提供了详细的文档和丰富的教程资源。
  5. ‌社区支持‌:OpenCV 拥有一个活跃的社区,用户可以在论坛、GitHub 和 Stack Overflow 等平台上寻求帮助和分享经验。

用途

  1. ‌图像处理‌:OpenCV 可以用于图像的滤波、去噪、增强、变换等操作,以改善图像的质量或提取有用的信息。
  2. ‌物体检测与识别‌:利用 OpenCV 提供的特征检测器(如 SIFT、SURF、ORB 等)和机器学习算法(如 SVM、随机森林等),可以实现物体的检测和识别。
  3. ‌视频分析‌:OpenCV 支持视频捕捉、处理和分析,可以用于视频跟踪、运动检测、背景减除等任务。
  4. ‌人脸识别‌:OpenCV 提供了多种人脸识别算法,如 Eigenfaces、Fisherfaces、LBPH(Local Binary Patterns Histograms)等,可以用于人脸检测、识别和验证。
  5. ‌三维重建‌:通过相机标定和立体视觉技术,OpenCV 可以实现三维场景的重建和测量。
  6. ‌增强现实(AR)‌:OpenCV 可以与计算机图形学库结合使用,实现增强现实应用,如在真实场景中叠加虚拟对象。

相关文章:

机器视觉与OpenCV--01篇

计算机眼中的图像 像素 像素是图像的基本单位,每个像素存储着图像的颜色、亮度或者其他特征,一张图片就是由若干个像素组成的。 RGB 在计算机中,RGB三种颜色被称为RGB三通道,且每个通道的取值都是0到255之间。 计算机中图像的…...

简单的Java小项目

学生选课系统 在控制台输入输出信息&#xff1a; 在eclipse上面的超级简单文件结构&#xff1a; Main.java package experiment_4;import java.util.*; import java.io.*;public class Main {public static List<Course> courseList new ArrayList<>();publi…...

使用layui的table提示Could not parse as expression(踩坑记录)

踩坑记录 报错图如下 原因&#xff1a; 原来代码是下图这样 上下俩中括号都是连在一起的&#xff0c;可能导致解析问题 改成如下图这样 重新启动项目&#xff0c;运行正常&#xff01;...

区块链共识机制详解

一.共识机制简介 在区块链的交流和学习中&#xff0c;「共识算法」是一个很频繁被提起的词汇&#xff0c;正是因为共识算法的存在&#xff0c;区块链的可信性才能被保证。 1.1 为什么需要共识机制&#xff1f; 所谓共识&#xff0c;就是多个人达成一致的意思。我们生活中充满…...

【Excel】单元格分列

目录 分列&#xff08;新手友好&#xff09; 1. 选中需要分列的单元格后&#xff0c;选择 【数据】选项卡下的【分列】功能。 2. 按照分列向导提示选择适合的分列方式。 3. 分好就是这个样子 智能分列&#xff08;进阶&#xff09; 高级分列 Tips&#xff1a; 新手推荐基…...

【含开题报告+文档+PPT+源码】基于微信小程序的旅游论坛系统的设计与实现

开题报告 近年来&#xff0c;随着互联网技术的迅猛发展&#xff0c;人们的生活方式、消费习惯以及信息交流方式都发生了深刻的变化。旅游业作为国民经济的重要组成部分&#xff0c;其信息化、网络化的发展趋势也日益明显。旅游论坛作为旅游信息交流和分享的重要平台&#xff0…...

微软 Phi-4:小型模型的推理能力大突破

在人工智能领域&#xff0c;语言模型的发展日新月异。微软作为行业的重要参与者&#xff0c;一直致力于推动语言模型技术的进步。近日&#xff0c;微软推出了最新的小型语言模型 Phi-4&#xff0c;这款模型以其卓越的复杂推理能力和在数学领域的出色表现&#xff0c;引起了广泛…...

操作系统课后习题2.2节

操作系统课后习题2.2节 第1题 CPU的效率指的是CPU的执行速度&#xff0c;这个是由CPU的设计和它的硬件来决定的&#xff0c;具体的调度算法是不能提高CPU的效率的&#xff1b; 第3题 互斥性&#xff1a; 指的是进程之间的同步互斥关系&#xff0c;进程是一个动态的过程&#…...

[小白系列]安装sentence-transformers

python环境为3.13.1执行 pip install sentence-transformers 总是报以下问题 ERROR: Cannot install sentence-transformers0.1.0, sentence-transformers0.2.0, sentence-transformers0.2.1, sentence-transformers0.2.2, sentence-transformers0.2.3, sentence-transformers…...

Python字符串format方法全面解析

在Python中&#xff0c;format方法是一种用于格式化字符串的强大工具。它允许你构建一个字符串&#xff0c;其中包含一些“占位符”&#xff0c;这些占位符将被format方法的参数替换。以下是对format方法用法的详细解释&#xff1a; 基本用法 format方法的基本语法如下&#…...

【Reading Notes】Favorite Articles from 2024

文章目录 1、January2、February3、March4、April5、May6、June7、July8、August9、September10、October11、November12、December 1、January 2、February 3、March Sora外部测试翻车了&#xff01;3个视频都有Bug&#xff08; 2024年03月01日&#xff09; 不仔细看还真看不…...

Python爬虫之Scrapy框架基础入门

Scrapy 是一个用于Python的开源网络爬虫框架&#xff0c;它为编写网络爬虫来抓取网站数据并提取结构化信息提供了一种高效的方法。Scrapy可以用于各种目的的数据抓取&#xff0c;如数据挖掘、监控和自动化测试等。 【1】安装 pip install scrapy安装成功如下所示&#xff1a;…...

spring cloud contract mq测试

对于spring cloud contract的环境配置和部署&#xff0c;请看我之前的文章。 一 生产者测试 测试生产者是否发送出消息&#xff0c;并测试消息内容是否正确。 编写测试合同 测试基类&#xff08;ContractTestBase&#xff09;上面要添加下面注解 SpringBootTest AutoConfig…...

Axure原型设计技巧与经验分享

AxureRP作为一款强大的原型设计工具&#xff0c;凭借其丰富的交互设计能力和高保真度的模拟效果&#xff0c;赢得了众多UI/UX设计师、产品经理及开发人员的青睐。本文将分享一些Axure原型设计的实用技巧与设计经验&#xff0c;帮助读者提升工作效率&#xff0c;打造更加流畅、用…...

计算机网络之王道考研读书笔记-1

第 1 章 计算机网络体系结构 1.1 计算机网络概述 1.1.1 计算机网络概念 internet(互连网)&#xff1a;泛指由多个计算机网络互连而成的计算机网络。这些网络之间可使用任意通信协议。 Internet(互联网或因特网)&#xff1a;指当前全球最大的、开放的、由众多网络和路由器互连…...

服务器限制某个端口只允许特定IP访问(处理第三方依赖漏洞)

最近项目部署之后&#xff0c;有些客户开始进行系统系统漏洞扫描&#xff0c;其中出现问题多的一个就是我们项目所依赖的Elasticsearch&#xff08;es检索服务&#xff09;&#xff0c;很容易就被扫出来各种高危漏洞&#xff0c;而且这些漏洞我们在处理起来是很棘手的&#xff…...

JavaScript--原型与原型链

在JavaScript中&#xff0c;原型&#xff08;prototype&#xff09;是一个非常重要且独特的概念&#xff0c;它在对象创建和继承方面发挥着关键作用。理解原型及其相关的机制有助于更好地理解JavaScript的对象模型&#xff0c;以及如何设计和使用对象和继承。 JavaScript–原型…...

hive—常用的日期函数

目录 1、current_date 当前日期 2、now() 或 current_timestamp() 当前时间 3、datediff(endDate, startDate) 计算日期相差天数 4、months_between(endDate, startDate) 日期相差月数 5、date_add(startDate, numDays) 日期加N天 6、date_sub(startDate, numDays) 日期减…...

HTML零基础入门教学

目录 一. HTML语言 二. HTML结构 三. HTML文件基本结构 四. 准备开发环境 五. 快速生成代码框架 六. HTML常见标签 6.1 注释标签 6.2 标题标签&#xff1a;h1-h6 6.3 段落标签&#xff1a;p 6.4 换行标签&#xff1a;br 6.5 格式化标签 6.6 图片标签&a…...

vue3 父组件调用子组件 el-drawer 抽屉

之前 Vue3 只停留在理论&#xff0c;现在项目重构&#xff0c;刚好可以系统的实战一下&#xff0c;下面是封装了一个抽屉表单组件&#xff0c;直接在父组件中通过调用子组件的方法打开抽屉&#xff1a; 父组件&#xff1a; <template><div id"app"><…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何&#xff0c;是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试&#xff0c;是可以跑通文章里面的代码。训练速度也是很快的。 注意…...

怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)

+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...