机器视觉学习(六)

您所在的位置:网站首页 在rgb模式的图像中每个像素的颜色值不一样 机器视觉学习(六)

机器视觉学习(六)

2024-07-07 22:52:15| 来源: 网络整理| 查看: 265

目录

一、色彩空间

1.1 RGB色彩空间

1.2 HSV色彩空间

1.3 灰度

1.4 CMYK色彩空间

1.5 Lab色彩空间

二、色彩空间转换

三、识别颜色

3.1 识别一种特定的颜色

3.2 识别多种颜色

一、色彩空间

计算机视觉中常用的色彩空间有RGB色彩空间、HSV色彩空间、CMYK色彩空间、Lab色彩空间等。

1.1 RGB色彩空间

RGB色彩空间是一种常用的计算机视觉颜色表示方法,它使用红(R),绿(G),蓝(B)三个颜色通道来表示所有可见光的颜色。每个通道的取值范围是0到255,代表了相应颜色的强度。通过组合不同强度的三个通道,可以表示出各种各样的颜色。

在RGB色彩空间中,每个像素的颜色可以表示为一个三维向量 (R, G, B),其中R、G、B分别代表红、绿、蓝的强度。通过调整这三个通道的强度,可以产生大量的颜色。

1.2 HSV色彩空间

HSV色彩空间是一种常用于计算机视觉领域的色彩表示方式。HSV代表色相(Hue)、饱和度(Saturation)和明度(Value)。

色相(Hue)表示颜色的种类或者类型。如红色、绿色、蓝色等。色相的取值范围是0到360度,对应了色环上不同的位置。

饱和度(Saturation)表示颜色的纯度或者鲜艳程度。饱和度的取值范围是0到1,0表示灰度(无色彩),1表示最高饱和度(最鲜艳的颜色)。

明度(Value)表示颜色的明亮程度。明度的取值范围也是0到1,0表示最暗的颜色,1表示最亮的颜色。

计算机视觉中常用HSV色彩空间来对图像进行颜色识别、色彩分割等任务。由于HSV色彩空间能够更好地模拟人类感知颜色的方式,因此在一些特定的应用场景中使用HSV色彩空间能够获得更好的效果。

1.3 灰度

灰度空间是指图像的亮度分量,即图像中每个像素的亮度值。灰度空间用于表示图像的黑白信息,常用的灰度空间有灰度图像和灰度直方图。

灰度图像是指每个像素的颜色只有灰度值,没有颜色信息。在计算机中,灰度图像通常使用8位表示,灰度值的范围为0-255,其中0表示黑色,255表示白色。

1.4 CMYK色彩空间

CMYK色彩空间是一种用于打印颜色的色彩空间,由青色(Cyan)、洋红色(Magenta)、黄色(Yellow)和黑色(Key)四个颜色通道组成。每个颜色通道的取值范围是0到100,表示颜色的浓度。

1.5 Lab色彩空间

Lab色彩空间是一种基于人眼感知的色彩空间,由亮度(L)、红绿色度(a)、黄蓝色度(b)三个参数组成。亮度取值范围是0到100,红绿色度和黄蓝色度取值范围是-128到127。Lab色彩空间可以很好地描述人眼对颜色的感知。

二、色彩空间转换

下面我直接代码显示:(有注释)

import cv2 import numpy as np # 将RGB图像转换为灰度图像 def rgb2gray(image): gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) return gray_image # 将RGB图像转换为HSV图像 def rgb2hsv(image): hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) return hsv_image # 将RGB图像转换为LAB图像 def rgb2lab(image): lab_image = cv2.cvtColor(image, cv2.COLOR_BGR2LAB) return lab_image # 将RGB图像转换为YCrCb图像 def rgb2ycrcb(image): ycrcb_image = cv2.cvtColor(image, cv2.COLOR_BGR2YCrCb) return ycrcb_image # 将RGB图像转换为L*a*b*图像 def rgb2labstar(image): labstar_image = cv2.cvtColor(image, cv2.COLOR_BGR2Lab) return labstar_image # 加载RGB图像 image = cv2.imread('image.jpg') //注意换成自己的路径 # 将RGB图像转换为灰度图像 gray_image = rgb2gray(image) # 将RGB图像转换为HSV图像 hsv_image = rgb2hsv(image) # 将RGB图像转换为LAB图像 lab_image = rgb2lab(image) # 将RGB图像转换为YCrCb图像 ycrcb_image = rgb2ycrcb(image) # 将RGB图像转换为L*a*b*图像 labstar_image = rgb2labstar(image) # 显示转换后的图像 cv2.imshow('RGB Image', image) cv2.imshow('Gray Image', gray_image) cv2.imshow('HSV Image', hsv_image) cv2.imshow('LAB Image', lab_image) cv2.imshow('YCrCb Image', ycrcb_image) cv2.imshow('L*a*b* Image', labstar_image) cv2.waitKey(0) cv2.destroyAllWindows()

三、识别颜色 3.1 识别一种特定的颜色

首先,我们可以通过颜色画板来查看对应颜色的BGR值。

知识拓展:

""" 滑条控制BGR """ """ 创建窗口: cv2.namedWindow("windowname") 创建滑条: cv2.createTrackbar("teackbarname","windowname",min,max,onchange) 获取滑条数据: cv2.getTrackbarPos("teackbarname","windowname") windowname: 窗口名 trackbarname: 滑条名 min: 滑条最小值 max: 滑条最大值 onchange: 每次滑块更改调用的函数 初始化图像: np.zeros((length, width, number), np.uint8) 默认初始化后的类型为 float64,后面虽然将其赋值为整数,但其存储类型还是浮点数,因其类型不对从而导致图像不能正常显示 length: 图像的长度 width: 图像的宽度 number: 颜色通道数 np.uint8: 使插值算法的结果显示正常 np.zeros(shape, dtype = float, order="C") shape: 创建的新数组的形状 (维度) dtype: 创建新数组的数据类型 (默认 float64) order: 可选参数 (C: 代表与C语言类似,行优先; F: 代表列优先) 返回值: 给定维度的全零数组 """

创建滑条控制颜色画板:

import cv2 as cv import numpy as np img = np.zeros((480,480,3),np.uint8) # 初始化一个 480*480的图像 def nothing(): # 创建一个函数 pass cv.namedWindow("BGR") # 创建窗口 cv.createTrackbar("R","BGR",0,255,nothing) # 创建滑条 cv.createTrackbar("G","BGR",0,255,nothing) cv.createTrackbar("B","BGR",0,255,nothing) while(1): r = cv.getTrackbarPos("R","BGR") # 获取滑条数据 g = cv.getTrackbarPos("G","BGR") b = cv.getTrackbarPos("B","BGR") print(r,g,b) img[:] = [b,g,r] cv.imshow("BGR",img) cv.waitKey(1)

运行结果:

由图可知:     R:39                G:212                B:231

要使用OpenCV识别特定的RGB颜色,完整的示例代码如下:

import cv2 import numpy as np # 定义要识别的颜色范围 lower_red = np.array([35, 212, 230]) upper_red = np.array([45, 212, 232]) # 读取图像 img = cv2.imread("D:\Open_CV\OpenCV_demo\Pictures\lanse.png") # 图像缩放 (长,宽) image = cv2.resize(img,(320,320),interpolation=cv2.INTER_AREA) # 图像缩放 (长,宽) # 将图像从BGR转换为RGB颜色空间 image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # 创建掩膜 mask = cv2.inRange(image_rgb, lower_red, upper_red) # 显示结果 result = cv2.bitwise_and(image_rgb, image_rgb, mask=mask) # 将图像从RGB转换为BGR颜色空间 result = cv2.cvtColor(result, cv2.COLOR_RGB2BGR) cv2.imshow("Result", result) cv2.imshow("image", image) cv2.waitKey(0) cv2.destroyAllWindows()

运行结果:

3.2 识别多种颜色

跟上述中识别一种颜色的方法一样,只不过需要加上被识别的颜色范围,多创建几个掩膜和显示窗口。

例如:

定义要识别的颜色范围: # 定义要识别的颜色范围 red_lower = np.array([0, 0, 100], np.uint8) red_upper = np.array([20, 255, 255], np.uint8) blue_lower = np.array([100, 100, 100], np.uint8) blue_upper = np.array([140, 255, 255], np.uint8) 根据定义的颜色范围,创建掩膜,将图像中的颜色区域标记为白色,其余区域标记为黑色: red_mask = cv2.inRange(hsv_image, red_lower, red_upper) blue_mask = cv2.inRange(hsv_image, blue_lower, blue_upper) 在原始图像上使用掩膜,只保留颜色区域: red_result = cv2.bitwise_and(image, image, mask=red_mask) blue_result = cv2.bitwise_and(image, image, mask=blue_mask) 显示结果: cv2.imshow('Red Result', red_result) cv2.imshow('Blue Result', blue_result) cv2.waitKey(0)



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭