1-6 图像覆盖掩膜 opencv树莓派4B 入门系列笔记

news2024/12/26 10:41:36

目录

一、提前准备

二、代码详解

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

lower_range = np.array([101, 100, 100], dtype=np.uint8)

upper_range = np.array([121, 255, 255], dtype=np.uint8)

mask = cv2.inRange(hsv, lower_range, upper_range)

mask2 = cv2.inRange(img, lower_range, upper_range)

 三、运行现象

四、完整代码

五、完整工程贴出


一、提前准备

        1、树莓派4B 及 64位系统

        2、提前安装opencv库 以及 numpy库

        3、保存一张图片

二、代码详解

1、设置阈值

# coding=utf-8 
 
import cv2
import numpy as np
 
# 使用cv2.imread函数读取指定路径下的图片文件。第二个参数1表示读取彩色图像(BGR格式)
img = cv2.imread('/home/raspberry4B/Pictures/MD.jpg', 1)
 
# 将图像从BGR色彩空间转换为HSV色彩空间。HSV色彩空间更适用于颜色范围检测,因为它基于色调(H)、饱和度(S)和亮度(V)。
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
 
# 定义一个NumPy数组,表示HSV色彩空间中颜色的下界。这里的数值代表色调、饱和度和亮度的最小值。 
lower_range = np.array([101, 100, 100], dtype=np.uint8)
# 定义一个NumPy数组,表示HSV色彩空间中颜色的上界。这里的数值代表色调、饱和度和亮度的最大值。  
upper_range = np.array([121, 255, 255], dtype=np.uint8)

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

  • 功能: 使用cv2.cvtColor函数将图像从BGR色彩空间转换为HSV色彩空间。
  • 参数:
    • img: 输入图像(在BGR色彩空间)。
    • cv2.COLOR_BGR2HSV: 表示从BGR转换到HSV色彩空间。HSV色彩空间更适合于进行颜色范围检测,因为它基于色调(Hue)、饱和度(Saturation)和亮度(Value)。

lower_range = np.array([101, 100, 100], dtype=np.uint8)

  • 功能: 定义HSV色彩空间中颜色范围的下界,使用NumPy创建一个数组。
  • 参数:
    • [101, 100, 100]: 该数组表示色调、饱和度和亮度的最小值。
    • dtype=np.uint8: 数据类型,表示无符号8位整数(即0-255)。

upper_range = np.array([121, 255, 255], dtype=np.uint8)

  • 功能: 定义HSV色彩空间中颜色范围的上界,使用NumPy创建一个数组。
  • 参数:
    • [121, 255, 255]: 该数组表示色调、饱和度和亮度的最大值。
    • dtype=np.uint8: 数据类型,表示无符号8位整数。

 2、覆盖掩膜

# 使用cv2.inRange函数根据指定的HSV颜色范围创建一个掩码图像。该掩码图像中,属于指定颜色范围的像素值为255(白色),其他像素值为0(黑色)。  
mask = cv2.inRange(hsv, lower_range, upper_range)

# 未转化为HSV直接用BGR,创建掩码图像
mask2 = cv2.inRange(img, lower_range, upper_range)

# 使用cv2.imshow函数显示掩码图像,窗口标题为'mask'。  
cv2.imshow('mask',mask)
# 使用cv2.imshow函数显示原始图像(经过缩放和色彩空间转换后),窗口标题为'image'。  
cv2.imshow('image', img)

cv2.imshow('mask2',mask2)

while(1):
#等待用户按键,按下‘q’就释放资源退出程序
    key=cv2.waitKey(1)
    if key&0XFF==ord('q'):
        break
 
cv2.destroyAllWindows()

mask = cv2.inRange(hsv, lower_range, upper_range)

  • 功能: 使用cv2.inRange函数根据指定的HSV颜色范围创建一个掩码图像。
  • 参数:
    • hsv: 输入图像(在HSV色彩空间)。
    • lower_range: HSV颜色范围的下界。
    • upper_range: HSV颜色范围的上界。
  • 结果: 生成的mask图像是一个二值图像,其中属于指定颜色范围的像素值为255(白色),其他像素值为0(黑色)。

mask2 = cv2.inRange(img, lower_range, upper_range)

  • 功能: 使用cv2.inRange函数直接在BGR色彩空间中创建一个掩码图像。
  • 参数:
    • img: 输入图像(在BGR色彩空间)。
    • lower_range: BGR颜色范围的下界。
    • upper_range: BGR颜色范围的上界。
  • 结果: mask2是一个二值图像,与mask类似,但它是在BGR色彩空间下的结果。

 三、运行现象

四、完整代码

# 这行指定了文件的编码格式为utf-8
# coding=utf-8 
 
import cv2
import numpy as np
 
# 使用cv2.imread函数读取指定路径下的图片文件。第二个参数1表示读取彩色图像(BGR格式)
img = cv2.imread('/home/raspberry4B/Pictures/MD.jpg', 1)
 
# 使用cv2.resize函数调整图像大小。这里,目标宽度和高度被设置为(0,0),表示将按照给定的缩放因子fx和fy来缩放图像。  
# fx=0.2和fy=0.2表示图像在水平和垂直方向上都将缩小到原来的20%。 
#img = cv2.resize(img, (0,0), fx=0.2, fy=0.2)
 
# 将图像从BGR色彩空间转换为HSV色彩空间。HSV色彩空间更适用于颜色范围检测,因为它基于色调(H)、饱和度(S)和亮度(V)。
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
 
# 定义一个NumPy数组,表示HSV色彩空间中颜色的下界。这里的数值代表色调、饱和度和亮度的最小值。 
lower_range = np.array([101, 100, 100], dtype=np.uint8)
# 定义一个NumPy数组,表示HSV色彩空间中颜色的上界。这里的数值代表色调、饱和度和亮度的最大值。  
upper_range = np.array([121, 255, 255], dtype=np.uint8)
 
# 使用cv2.inRange函数根据指定的HSV颜色范围创建一个掩码图像。该掩码图像中,属于指定颜色范围的像素值为255(白色),其他像素值为0(黑色)。  
mask = cv2.inRange(hsv, lower_range, upper_range)

# 未转化为HSV直接用BGR,创建掩码图像
mask2 = cv2.inRange(img, lower_range, upper_range)

# 使用cv2.imshow函数显示掩码图像,窗口标题为'mask'。  
cv2.imshow('mask',mask)
# 使用cv2.imshow函数显示原始图像(经过缩放和色彩空间转换后),窗口标题为'image'。  
cv2.imshow('image', img)

cv2.imshow('mask2',mask2)


while(1):
#等待用户按键,按下‘q’就释放资源退出程序
    key=cv2.waitKey(1)
    if key&0XFF==ord('q'):
        break
 
cv2.destroyAllWindows()

五、完整工程贴出

(持续更新中)opencv树莓派4B入门系列笔记6~10完整工程源码资源-CSDN文库

持续更新中……

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python】数据可视化之分类图

目录 条形图 箱形图 散点图 分簇散点图 小提琴 分簇小提琴 条形图 条形图是一种直观的图表形式,它通过不同长度的矩形条(即“条形”)来展示数值变量的中心趋势估计值,其中每个矩形的高度直接对应于该组数据的某个中心量度&…

urdf ( xacro ) 的 collision碰撞参数设置

目录 写在前面的话整体流程1 URDF 文件结构2 查看原始碰撞形状描述3 加入简单碰撞形状描述方法一 Meshlab 自动测量方法二 人为测量 4 加入XACRO函数简化描述 最终结果展示侧视图正视图碰撞几何体中心点设置不对出现的结果 写在前面的话 本文使用的 URDF 文件是由 solidworks …

百度飞浆OCR半自动标注软件OCRLabel配置【详细

今天帮标注人员写了一份完整的百度飞浆OCR标注软件的安装配置说明书、以供标注人员使用 包括各种环境安装包一起分享出来【conda\python\label项目包、清华源配置文件、pycharm社区版安装包】 提取码:umys 1、解压并安装tools文件下的miniconda,建议安装在D盘下的…

【docker】基于docker-compose 安装elasticsearch + kibana + ik分词器(8.10.4版本)

记录下,使用 docker-compose 安装 Elasticsearch 和 Kibana,并配置 IK 分词器,你可以按照以下步骤进行。此过程适用于 Elasticsearch 和 Kibana 8.10.4 版本。 安装 首先,在你的工作目录下创建一个 docker-compose.yml 文件&…

Java基础-IO相关

文章目录 类层次结构1. java.io 包整体示意图核心类字节流(Byte Stream)字符流(Character Stream)其他辅助类 2. java.nio 包示意图核心类文件操作 总结 字符流读写1. 字符流的核心类1.1 Reader 和 Writer 2. 常用的字符流类2.1 字…

vue3写一个无限树形菜单,递归组件

原本使用element plus的el-tree&#xff0c;可是他的UI不匹配&#xff0c;狠难改成自己想要的&#xff0c;所以只能自己去写一个&#xff0c;做法&#xff1a;使用递归组件 效果 组件代码itemDir.vue // itemDir.vue<template><div><ul v-for"node in li…

Java+Swing+sqlserver学生成绩管理系统

JavaSwingsqlserver学生成绩管理系统 一、系统介绍二、系统展示1.登陆2.课程分配3.选课管理4.学生打分--教师4.查询个人成绩--学生 三、其他1.其它系统 一、系统介绍 管理员:登陆页面、课程管理、选课管理 老师&#xff1a;给学生打分 学生&#xff1a;查询个人成绩 二、系…

景联文科技:专业图像采集服务,助力智能图像分析

景联文科技是专业数据服务公司&#xff0c;致力于为人工智能企业提供从数据采集、清洗到标注的全流程解决方案。协助客户解决AI开发过程中数据处理环节的关键问题&#xff0c;助力企业实现智能化转型。 1.多样化的图像采集服务 景联文科技提供多样化的图像采集服务&#xff0c…

7.9.17 Readiness Time Reporting Extended Capability

RTR提供了一种可选机制&#xff0c;用于描述设备或功能进入准备状态所需的时间。在指示的情况下&#xff0c;允许软件在等待此功能中公告的时间后向设备或功能发出请求&#xff0c;并且无需等待其他地方所需的&#xff08;更长&#xff09;时间。 软件允许在最早的时间发出请求…

【漏洞复现】赛蓝企业管理系统 GetJSFile 任意文件读取漏洞

免责声明&#xff1a; 本文内容旨在提供有关特定漏洞或安全漏洞的信息&#xff0c;以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步&#xff0c;并非出于任何恶意目的。阅读者应该明白&#xff0c;在利用本文提到的漏洞信息或进行相关测…

策略模式的小记

策略模式 策略模式支付系统【场景再现】硬编码完成不同的支付策略使用策略模式&#xff0c;对比不同&#xff08;1&#xff09;支付策略接口&#xff08;2&#xff09;具体的支付策略类&#xff08;3&#xff09;上下文&#xff08;4&#xff09;客户端&#xff08;5&#xff0…

【Redis】Redis Sentinel(哨兵)系统:自动故障恢复与高可用性配置全解

目录 哨兵 (Sentinel)基本概念主从复制的问题⼈⼯恢复主节点故障哨兵⾃动恢复主节点故障 安装部署 (基于 docker)准备⼯作 以下部分是独立于这一章节的Docker安装Server版本安装CentOS安装实战经验 GUI版本安装&#xff08;以windows 11为例&#xff09;安装docker 以上部分是独…

elementUI table 给表头添加气泡显示(鼠标悬浮显示注释)

elementUI table 给表头添加气泡显示&#xff08;鼠标悬浮显示注释&#xff09; 前言&#xff1a;文档显示&#xff1a;&#xff08;使用插槽&#xff0c;我看看到底是怎么个事儿&#xff09;文档代码:修改后的效果&#xff1a;页面效果&#xff1a; 前言&#xff1a; 公司出现…

Termius for Mac/Win:高效、安全的跨平台多协议远程管理软件

Termius for Mac/Win是一款专为专业人士设计的跨平台多协议远程管理软件&#xff0c;以其强大的功能、简洁的界面和高效的操作体验&#xff0c;赢得了广泛的好评。这款软件不仅支持SSH、Telnet、SFTP等多种远程连接协议&#xff0c;还具备丰富的安全特性和便捷的管理功能&#…

免费的月考成绩发布小程序

月考成绩出炉&#xff0c;老师们便开始了一项既繁琐又耗时的工作&#xff1a;将成绩单私信给每位学生家长。需要老师们在繁忙的教学工作中抽出自己额外休息的时间&#xff0c;还要确保每位家长都能及时准确的收到自己孩子的成绩单。然而&#xff0c;随着科技的发展&#xff0c;…

歌者PPT新功能速递!

本期功能更新&#xff0c;主要围绕 PPT 大纲编辑器和 PPT 翻译功能&#xff0c;全面提升了制作效率和灵活性&#xff0c;帮助你更轻松地完成 PPT 制作&#xff01;一起来看看吧&#xff5e;&#x1f447; # 功能更新 1 PPT 大纲编辑器全面更新 &#x1f4dd; 现在&#xff0c…

StarRocks Lakehouse 快速入门——Apache Iceberg

导读&#xff1a; StarRocks Lakehouse 快速入门旨在帮助大家快速了解湖仓相关技术&#xff0c;内容涵盖关键特性介绍、独特的优势、使用场景和如何与 StarRocks 快速构建一套解决方案。最后大家也可以通过用户真实的使用场景来了解 StarRocks Lakehouse 的最佳实践&#xff01…

C++入门(03)新手常见问题集锦(一)

文章目录 1. 一闪而过使用system("pause")使用cin.get() 1. 一闪而过 .exe 在用户计算机上运行后“一闪而过”&#xff0c;因为控制台程序没有专门的用户图形界面&#xff0c;当程序执行完所有代码后就会自动关闭窗口。 使用system(“pause”) 在程序的结尾处加入…

Iceberg与SparkSQL整合DDL操作

前言 使用SparkSql操作Iceberg表之前我们得先配置好catalog&#xff0c;配置方式参考这篇博客。 创建非分区表 Spark3使用USING iceberg来创建表&#xff1a; CREATE TABLE prod.db.sample (id bigint NOT NULL COMMENT unique id,data string) USING iceberg;这里的数据类…

伦敦银ATR策略

ATR这个技术指标由J.Welles Wilder发明&#xff0c;‌主要用来衡量伦敦银的价格波动&#xff0c;它虽然‌不能直接反映银价走向及其趋势稳定性&#xff0c;但‌ATR指标价值越高&#xff0c;‌趋势改变的可能性就越高&#xff1b;‌价值越低&#xff0c;‌趋势的移动性就越弱。 …