广州网站运营专注乐云seo,wordpress 菜单分类,做问卷的网站有哪些内容,在网上做黑彩网站会怎样处罚目录
一、色彩空间
1.1 RGB色彩空间
1.2 HSV色彩空间
1.3 灰度
1.4 CMYK色彩空间
1.5 Lab色彩空间
二、色彩空间转换
三、识别颜色
3.1 识别一种特定的颜色
3.2 识别多种颜色 一、色彩空间
计算机视觉中常用的色彩空间有RGB色彩空间、HSV色彩空间、CMYK色彩空间、La…目录
一、色彩空间
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到10表示灰度无色彩1表示最高饱和度最鲜艳的颜色。
明度Value表示颜色的明亮程度。明度的取值范围也是0到10表示最暗的颜色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, orderC)shape: 创建的新数组的形状 (维度)dtype: 创建新数组的数据类型 (默认 float64)order: 可选参数 (C: 代表与C语言类似,行优先; F: 代表列优先)返回值: 给定维度的全零数组 创建滑条控制颜色画板
import cv2 as cv
import numpy as npimg np.zeros((480,480,3),np.uint8) # 初始化一个 480*480的图像
def nothing(): # 创建一个函数passcv.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)
运行结果 由图可知 R39 G212 B231 要使用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),interpolationcv2.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, maskmask)# 将图像从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, maskred_mask)
blue_result cv2.bitwise_and(image, image, maskblue_mask)
显示结果
cv2.imshow(Red Result, red_result)
cv2.imshow(Blue Result, blue_result)
cv2.waitKey(0)