热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

第08课图像模式转换—RGB、HSV

**学科:**人工智能年级:七年级上**课题:**第08课图像模式转换—RGB、HSV课时数:1课时学情分析:前面学生已经完全掌握了图像的读取、显示和保存的原理以及相应的函数调用,
**学科:**人工智能年级: 七年级上
**课题:**第08课 图像模式转换—RGB、HSV课时数:1课时

学情分析:

前面学生已经完全掌握了图像的读取、显示和保存的原理以及相应的函数调用,包括使用numpy库对图像进行基本的修改,在上一节课中学生也初步学习了图像转换为灰度和黑白图像的方法与步骤,这为本节课继续学习图像模式的另种转换方式HSV打下了较好的基础。

教学目标:

1.理解OpenCV中图像三通道的读取方式,比较分析BGR与RGB转换后的不同。

2.通过原理阐释,使学生了解HSV图像颜色识别的所具备优势,并掌握BGR图像转换为HSV图像的方法。

**教学重点:**OpenCV中图像模式的转换方法

**教学难点:**对比分析图像HSV与普通RGB图像的优缺点

**教学准备:**Python编程软件、图像素材

教学过程

一、开放导入

同学们都知道了一幅彩色图像是由三个通道组成的,这三个通道可以从一幅图像中单独拆分出来查看吗?大家想不想看看每个通道的图像颜色吗?

打开并运行素材文件夹中的“拆分合并图像通道.py”文件,查看显示效果,思考并理解如何将一幅图像的三个通道拆分出来,之后再如何进行合并。

二、核心过程推进

1**、OpenCV中图像通道的读取顺序(BGR转RGB)**

在OpenCV中如何查看一幅彩色图像各个通道的颜色呢?

我们可以采用numpy库通过设置其中两个通道的值为0,来查看第三个通道的颜色图像。

import cv2
import numpy as np
img = cv2.imread('xiaogou.bmp')
img[:,:,0] = 0
img[:,:,1] = 0 # 使用numpy 将图像第一、第二个通道值设置为0
cv2.imshow('img',img) #显示第三个通道图像颜色
cv2.imwrite('img1.bmp',img)#保存第三个通道图像
cv2.waitKey(0)

通过运行,大家会发现显示的第三个通道颜色是红色通道,但是正常的RGB图像中第三个通道应该是蓝色通道啊,这是为什么呢?
《第08课 图像模式转换—RGB、HSV》

同样的道理,我们也可以通过修改第二和第三个通道的颜色值,查看另外第一个通道的颜色。

【总结】Opencv中读取图像的通道顺序是BGR

思考:

我们是否可以将OpenCV中BGR图像转换为RGB呢?

仍旧可以用我们上节课所用的图像颜色空间转换函数:cv2.cvtColor(img,cv2.COLOR_BGR2RGB)。

练习:

修改代码并运行,查看转换为RGB图像后的通道颜色与未转换前的效果有什么不同,说出原因?
《第08课 图像模式转换—RGB、HSV》

**【注意】**OpenCV中BGR和RGB转换后图像的颜色也会改变,如果仅仅是在OpenCV中处理图像是不需要使用这个转换函数的,否则会改变图像原有的颜色。但是在其他库函数使用时,比如matplotlib,它读取图像的顺序是RGB,这时候就需要用到此转换函数将BGR转换为RGB,图像颜色才会读取正常。

2**、BGR转HSV图像**

H(色彩/色度),S(饱和度),V(亮度)

**思考:**比较RGB图像与HSV颜色图像有什么不同?

RGB通道并不能很好地反映出物体具体的颜色信息,

HSV空间能够非常直观的表达色彩的明暗,色调,以及鲜艳程度,方便进行颜色之间的对比。
《第08课 图像模式转换—RGB、HSV》

在 OpenCV 的 HSV 格式中,通过上面的HSV空间各种颜色的范围表格我们可以了解HSV的取值范围:

H的取值范围是[0,180],

S的取值范围 [0,255],

V的取值范围 [0,255]。

读表格可知:绿色在HSV空间中H维度的范围为35~77, S维度范围为43255,V维度范围为46255。我们就可以用三维数组表示绿色的HSV范围,最低为[35,43,46],最高为[77,255,255]。这将对后面我们学习图像颜色的提取与识别中有很大的帮助。

注意:不同的软件使用的值可能不同。所以当你需要拿 OpenCV 的 HSV 值与其他软件的 HSV 值进行对比时,一定要记得归一化。

思考:

同BGR转换为RGB或Gray图像一样,我们是否也可以将OpenCV中BGR图像转换为HSV图像呢?

答案是肯定的,我们可以用如下的函数实现:

cv2.cvtColor(img,cv2.COLOR_BGR2HSV)。

练习:

修改并调试运行“BGR转HSV”Python文件,观察图像转化为HSV图像的效果。

import cv2
img = cv2.imread('1.jpg')
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
cv2.imshow('img',img) #原图像
cv2.imshow('hsv',hsv) #hsv模式图
cv2.imwrite('hsv.bmp',hsv)
cv2.waitKey(0)
cv2.destroyAllWindows()

《第08课 图像模式转换—RGB、HSV》
三、开放延伸

import cv2
img = cv2.imread('1.jpg')
rgb = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
hsv = cv2.cvtColor(rgb,cv2.COLOR_BGR2HSV)
cv2.imshow('hsv2',hsv)
cv2.imwrite('hsv2.bmp',hsv)
cv2.waitKey(0)
cv2.destroyAllWindows()

同样都是转换为hsv模式,使用上面的代码,图像最后转换为HSV图像后会和上面转换成HSV图像不一致,是什么原因造成这种不同的?解释说明。


推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 本文介绍了Python对Excel文件的读取方法,包括模块的安装和使用。通过安装xlrd、xlwt、xlutils、pyExcelerator等模块,可以实现对Excel文件的读取和处理。具体的读取方法包括打开excel文件、抓取所有sheet的名称、定位到指定的表单等。本文提供了两种定位表单的方式,并给出了相应的代码示例。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
author-avatar
看山不是山
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有