提取一副彩色图像中红色,用HIS模型处理,RGB模型对比显示

  • 参考文献
  • 引入
  • 显示HIS模型提取的红色
  • RGB模型 提取红色

参考文献

bgr_2_hsi、color_slicing来自:数字图像处理:彩色图片处理,HSI模型
hsv提取彩色的方法来自:OpenCV之颜色空间转换、掩膜(mask)、颜色提取——python实现
HSV提取指定其他所有颜色的方法:Python3 识别判断图片主要颜色,提取指定颜色的方法
感谢各位作者!

引入

import cv2
import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

显示HIS模型提取的红色

函数bgr_2_hsi:

def bgr_2_hsi(image):out = np.copy(image)out_slicing = np.zeros(image.shape, np.uint8)for x in range(image.shape[0]):# print(str(int(x / image.shape[0] * 100)) + "%")for y in range(image.shape[1]):b, g, r = image[x][y]b, g, r = int(b), int(g), int(r)i_s = np.sum([b, g, r])i = i_s / 3# i == 0, s and h is no senseif i_s == 0:i = 0s = 0h = 0out[x][y] = h, s, icontinues = (1 - (3 * np.min([b, g, r])) / i_s) * 255# s == 0 h is no senseif s == 0:h = 0out[x][y] = h, s, icontinuethea = np.arccos((2 * r - g - b) / (2 * np.sqrt((r - g) ** 2 + (r - b) * (g - b))))if g >= b:h1 = theaelse:h1 = np.pi * 2 - theah1 = np.rad2deg(h1)# slicingif (int(h1) in range(0, 11) or int(h1) in range(350, 361)) and s / 255 > 0.1:print(int(h1))out_slicing[x][y] = image[x][y]h = h1 / 360 * 255out[x][y] = h, s, ireturn out

实现:

# 读入的图像是BGR空间图像
frame = cv2.imread("img/color2.png")# frame_to_hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
# 部分1:将BGR空间的图片转换到HSI空间
frame_to_hsi = bgr_2_hsi(frame)# 部分2:
# 每个分量设定两个阈值
#    H_min < H < H_max  AND
#    S_min < S < S_max  AND
#     I_min < I < I_max
# 定义红色
lower_red = np.array([0, 100, 100])
upper_red = np.array([10, 255, 255])# 部分3:
# 从HSI图像中截取出蓝色、绿色、红色,即获得相应的掩膜
# cv2.inRange()函数是设置阈值去除背景部分,得到想要的区域red_mask = cv2.inRange(frame_to_hsi, lower_red, upper_red)# 部分4:
# 将原图像和mask(掩膜)进行按位与red_res = cv2.bitwise_and(frame, frame, mask=red_mask)# 最后得到要分离出的颜色图像# 部分5:将BGR空间下的图片转换成RGB空间下的图片
frame = frame[:, :, ::-1]
red_res = red_res[:, :, ::-1]# 部分6:显示图像plt.subplot(131), plt.imshow(frame) ,plt.title("原图")
plt.subplot(132), plt.imshow(red_mask), plt.title("红色遮罩")
plt.subplot(133), plt.imshow(red_res), plt.title("红色")plt.show()

结果:

RGB模型 提取红色

函数:

def color_slicing(image, center, w):""":param image::param center: b, g, r ib range 0 ~ 255:param w: width:return:"""out = np.zeros(image.shape, np.uint8)for x in range(image.shape[0]):for y in range(image.shape[1]):r_b, r_g, r_r = centera_b, a_g, a_r = image[x][y]if abs(r_b - a_b) < w / 2 and abs(r_g - a_g) < w / 2 and abs(r_r - a_r) < w / 2:out[x][y] = image[x][y]return out

实现:

img = cv2.imread("img/color2.png")
img_to_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img_slice_red = color_slicing(img_to_rgb, (241, 68, 58), 0.2549 * 255)
plt.subplot(121), plt.imshow(img_to_rgb), plt.title("原图RGB")
plt.subplot(122), plt.imshow(img_slice_red), plt.title("红色")
plt.show()

结果:

opencv-python数字图像处理学习7:提取一副彩色图像中红色,用HIS模型处理,RGB模型对比显示相关推荐

  1. [matlab数字图像处理8]提取一副彩色图像中红色,用HIS模型处理,RGB模型对比显示

    一. 问题描述 提取一副彩色图像中红色,用HIS模型处理,RGB模型对比显示: 二. 求解思路 彩色图像的处理有两种主要方法,RBG(红,绿,蓝)和HIS(色调,饱和度,亮度),matlab可以直接读 ...

  2. OpenCV数字图像处理学习平台

    原始图像1-1 处理中的图像1-2 处理结果1-3(检测到所有圆) OpenCV数字图像处理学习平台,是一款可视化.交互式方式学习OpenCV的工具软件,由资深计算机视觉专家精心打造,花费近两年整理成 ...

  3. 数字图像处理与python实现_数字图像处理学习(2)—— 图像直方图均衡与图像匹配(python实现)...

    数字图像处理学习(2)-- 直方图均衡与图像匹配 1. 直方图均衡(Histogram Equalization) 1.1 直方图均衡化概念 1.2 直方图均衡实现简单思路 1.3 直方图均衡实现代码 ...

  4. 基于python的数字图像处理--学习笔记(三)

    基于python的数字图像处理--学习笔记(三) 前言 一.灰度拉伸 二.幂律(伽马)变换 三.对数变换 前言 进入冈萨雷斯的第三章内容,并用python实现功能.我更改了代码源,之前找到太烂了,代码 ...

  5. 数字图像处理学习笔记 六 彩色图像处理

    目录 (一)彩色模型介绍 1.1 RGB模型 1.2 CMY.CMYK模型 1.3 HSI彩色模型 1.4 HSV模型 1.5 YCbCr 彩色空间 (二)伪彩色图像处理 (三)全彩色图像处理及彩色变 ...

  6. 数字图像处理学习笔记(三):ORB算法(尺度不变特征变换)Oriented FAST and Rotated BRIEF

    数字图像处理学习笔记(三):ORB算法(尺度不变特征变换)Oriented FAST and Rotated BRIEF 一.概述 参考:特征点匹配+特征检测方法汇总 ORB的全称是Oriented ...

  7. 数字图像处理学习路线大体介绍

    数字图像处理学习路线大体介绍 这是中国科学院大学人工智能学院的图像课大体重要内容 图像增强 直方图增强 空域增强 频域增强 图像去噪 空域去噪 频域去噪 图像复原 退化模型 逆滤波 维纳滤波 图像色彩 ...

  8. python绘制灰度图片直方图-python数字图像处理实现直方图与均衡化

    在图像处理中,直方图是非常重要,也是非常有用的一个处理要素. 在skimage库中对直方图的处理,是放在exposure这个模块中. 1.计算直方图 函数:skimage.exposure.histo ...

  9. 第1章 Python 数字图像处理(DIP) --绪论

    Python 数字图像处理 关于本专栏 此专栏为 Python 数字图像处理(DIP)(冈萨雷斯版),专栏里文章的内容都是来自书里,全部手打,非OCR,因为很多公式,都是用LaTex输入,力求更好看的 ...

最新文章

  1. 《CCNP TSHOOT 300-135认证考试指南》——2.2节故障检测与排除及网络维护工具箱
  2. 一道有意思的css面试题,9宫格
  3. python 并行计算库_Python 大规模数据存储与读取、并行计算:Dask库简述
  4. php mysql source_详解MySQL数据库中有关source命令
  5. webrtc iOS端编译
  6. C语言成为大学必修课!想要不挂科?你只需要这样做
  7. JavaScript 内存机制(前端同学进阶必备)
  8. Yeelink初步体验
  9. 获取本地ip(一个或多个都能取)
  10. (5)STM32使用HAL库实现串口通讯——实战操作
  11. 程序MD5校验的作用
  12. Java I/O系统之处理流类型
  13. 基础—机器学习—softMax regression
  14. d3d11 indirect lighting
  15. java 游戏 异步框架_基于Java的轻量级异步编程框架
  16. 算法设计思维导图(算法设计与分析第二版)
  17. 通达信主力强势上涨预警副图指标公式(源码)
  18. 天思软件常见问题汇总
  19. 格式工厂高清视频转换参数设置
  20. math四舍五入 java_使用Math.cei将Java四舍五入到int

热门文章

  1. 计算机技术在美术方面的应用,计算机技术在图形图像处理中的应用
  2. 数据分析实例——美国加州人口分析[isnull().any()/.unique()/merge/set_index/df.query/sort_values]
  3. 这几行码是什么意思呢
  4. 算法面试题:扔玻璃杯的学问
  5. 北风python培训
  6. win10/11上一键切换全拼/双拼
  7. 如何搭建nginx服务器?
  8. 获取IP地址信息的API合集
  9. 写给想通过程序员转型为项目经理的人
  10. Spring Boot项目部署服务器 本地正常 远程无法访问问题排错