当前位置: 首页 > 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"><…...

实战应用:基于快马平台开发一个具备节点测速功能的网络工具面板

最近在折腾服务器节点管理时&#xff0c;发现手动测试各个节点的延迟特别麻烦。正好看到InsCode(快马)平台这个在线开发环境&#xff0c;就尝试用它快速搭建了一个带测速功能的网络工具面板。整个过程比想象中简单很多&#xff0c;分享下具体实现思路。 项目构思 这个工具的核…...

Blueman:Linux系统蓝牙管理的高效解决方案

Blueman&#xff1a;Linux系统蓝牙管理的高效解决方案 【免费下载链接】blueman Blueman is a GTK Bluetooth Manager 项目地址: https://gitcode.com/gh_mirrors/bl/blueman 在Linux桌面环境中&#xff0c;蓝牙设备管理长期面临着易用性与功能性难以兼顾的挑战。Bluema…...

社交媒体数据采集难题?MediaCrawler让复杂任务变简单

社交媒体数据采集难题&#xff1f;MediaCrawler让复杂任务变简单 【免费下载链接】MediaCrawler-new 项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new 在信息爆炸的数字时代&#xff0c;企业、研究机构和内容创作者常常需要从各大社交平台获取有价…...

Android显示驱动避坑指南:高通平台UEFI显示初始化常见问题解析

Android显示驱动避坑指南&#xff1a;高通平台UEFI显示初始化常见问题解析 在移动设备开发领域&#xff0c;显示系统的稳定性直接影响用户体验。作为Android底层开发的核心环节&#xff0c;高通平台UEFI显示初始化过程涉及硬件抽象层、固件配置和内核交互等多个技术层面。本文…...

如何用Obsidian PDF++插件打造终极PDF阅读与标注体验

如何用Obsidian PDF插件打造终极PDF阅读与标注体验 【免费下载链接】obsidian-pdf-plus PDF: the most Obsidian-native PDF annotation & viewing tool ever. Comes with optional Vim keybindings. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-pdf-plus …...

113. 强制使用 Letsencrypt ECDSA 和 DNS-01 续期挑战的默认 HTTPS Rancher 证书

Environment 环境 2.9 Situation 地理位置A self-signed default Rancher certificate is currently used and will be migrated to a stronger Let’s Encrypt ECDSA-386 certificate using the DNS-01 renewal challenge. 目前使用自签名默认的牧场证书&#xff0c;并将通过…...

QMK Toolbox终极指南:从零开始掌握键盘固件刷写的完整教程

QMK Toolbox终极指南&#xff1a;从零开始掌握键盘固件刷写的完整教程 【免费下载链接】qmk_toolbox A Toolbox companion for QMK Firmware 项目地址: https://gitcode.com/gh_mirrors/qm/qmk_toolbox QMK Toolbox是机械键盘爱好者的必备神器&#xff0c;这款开源工具集…...

如何在3小时内构建你的第一个炉石传说AI机器人?Hearthrock终极指南

如何在3小时内构建你的第一个炉石传说AI机器人&#xff1f;Hearthrock终极指南 【免费下载链接】hearthrock Hearthstone Bot Engine 项目地址: https://gitcode.com/gh_mirrors/he/hearthrock Hearthrock是一个革命性的炉石传说AI引擎&#xff0c;专为人工智能研究者和…...

OpenClaw技能开发入门:千问3.5-9B定制天气查询

OpenClaw技能开发入门&#xff1a;千问3.5-9B定制天气查询 1. 为什么需要自定义技能&#xff1f; 去年冬天&#xff0c;我经常需要同时查看多个城市的天气情况来安排出差行程。每次手动打开天气网站、输入城市名、截图保存的操作让我不胜其烦。直到发现OpenClaw支持自定义技能…...

Phi-4-mini-reasoning部署案例:科研团队构建内部逻辑验证辅助工具链

Phi-4-mini-reasoning部署案例&#xff1a;科研团队构建内部逻辑验证辅助工具链 1. 项目背景与模型介绍 Phi-4-mini-reasoning 是一款专注于推理任务的文本生成模型&#xff0c;特别适合处理数学题、逻辑题、多步分析和简洁结论输出等场景。与通用聊天模型不同&#xff0c;它…...