专栏首页readmeColor model 色彩模型
原创

Color model 色彩模型

A color model is a system for creating a full range of colours from a small set of primary colors. There are two types of colour models: additive and subtractive. Additive color modelsuse light to display color, while subtractive color models use printing inks.

颜色模型指的是某个三维颜色空间中的一个可见光子集,它包含某个色彩域的所有色彩。一般而言,任何一个色彩域都只是可见光的子集,任何一个颜色模型都无法包含所有的可见光。常见的颜色模型有RGB CIECMY/CMYK、(HSK NTSC、YcbCr、HSV 等。

BGR/RGB <-> HLS/HSV <-> GRAY <-> BINARY

BGR (blue, green, red) and RGB (red, green, blue) w*h*3*[0-255]

HSL (hue, saturation, lightness) and HSV (hue, saturation, value) w*h*3

Gray = w*h*[0-255] Binary = w*h*[0/1]

# RGB/BGR <-> HSL/HSV/GRAY
cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.cvtColor(image, cv2.COLOR_BGR2HSL)
# white color mask
lower = np.uint8([123, 116, 116])
upper = np.uint8([186, 172, 160])
white_mask = cv2.inRange(image, lower, upper)
# yellow color mask
lower = np.uint8([134, 121, 100])
upper = np.uint8([206, 155, 87])
yellow_mask = cv2.inRange(image, lower, upper)

# Gray -> Binary
cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # min 127, max 255
cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV)
cv2.threshold(gray, 127, 255, cv2.THRESH_TRUNC)
cv2.threshold(gray, 127, 255, cv2.THRESH_TOZERO)
cv2.threshold(gray, 127, 255, cv2.THRESH_TOZERO_INV)

# Binary -> Gray -> BGR
np.array(binary*255).astype(np.uint8)
cv2.cvtColor(gray, cv2.COLOR_GRAY2BGR)

# HSV/HSL color filter
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# white color mask
lower = np.uint8([0, 0, 0])
upper = np.uint8([0, 0, 255])
white_mask = cv2.inRange(hsv, lower, upper)
# yellow color mask
lower = np.uint8([ 10,   0, 100])
upper = np.uint8([ 40, 255, 255])
yellow_mask = cv2.inRange(hsv, lower, upper)
# combine the mask
mask = cv2.bitwise_or(white_mask, yellow_mask)

# combine the mask
mask = cv2.bitwise_or(white_mask, yellow_mask)
target = cv2.bitwise_and(img,img, mask=mask)

# ch_binary = np.zeros_like(img[:,:,int(ch-1)])
# ch_binary[(img[:,:,int(ch-1)]>=ch_thresh[0])&(img[:,:,int(ch-1)]<=ch_thresh[1])] = 1

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Histogram 直方图

    直方图(Histogram),又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据类型,纵轴表示分布情况。

    readme
  • Camera Calibration 摄像头标定

    Pinhole camera calibration calls camera vision from 3D objects in the real world...

    readme
  • How to design a parking lot using object-oriented principles?

    Asked In : Amazon, Apple, Google and many more interviews

    readme
  • Opencv - Contours 属性及操作 Python API

    cv2.findContours函数输入有三个参数: - thresh: source image - cv2.RETR_TREE: 轮...

    AIHGF
  • EmguCV学习——简单使用

    公司是视觉方面的业务,我又不会c++(好想会啊,正在学习中)。由于各种需求,自己觉得对c++不是特别感冒,所以选用了net下的opencv的封装EmguCV。p...

    叁金
  • OpenCV 系列教程1 | OpenCV 的 GUI 特性

    Matplotlib是一个用于Python的绘图库,它提供了多种绘图方法。在这里,将学习如何使用 Matplotlib 显示图像。可以使用 Matplotlib...

    机器视觉CV
  • OpenCV(3.2)+Python(3

      博主最近由于项目需求,需要学习OpenCV,在查看并试验了几种语言之后决定用Python作为开发语言。刚开始学习也是各种网上找资料,但是网上的资料过于杂乱,...

    py3study
  • Python OpenCV4趣味应用系列(八)---基于SimpleBlobDetector识别骰子点数

    Blob是图像中一组相连的像素,它们具有一些共同的属性(例如灰度值),Blob检测的目的是识别并标记这些区域。OpenCV提供了一种方便的方法来检测blo...

    Color Space
  • [图像处理] Python+OpenCV实现车牌区域识别

    这里原理推荐我以前C++图像处理的文章,如下:https://blog.csdn.net/column/details/eastmount-mfc.html

    统计学家
  • OpenCV从零基础---检测及分割图像的目标区域

    作者:王抒伟 编辑:王抒伟 算了 爱看多久看多久 零 参考目录: 1.获取图片 2.转换灰度并去噪声 3.提取图像的梯度 4.我们继续去噪声 5.图像形态学...

    机器学习算法工程师

扫码关注云+社区

领取腾讯云代金券