颜色分割

普通读取的图片都是RGB格式,就意味着每种颜色都是由三种RGB组合而成。同样的常用的格式还有HSV,具体的看下面的百度贴过来的:
色调H
用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,紫色为300°;
饱和度S
饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。
明度V
明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。

下面展示使用HSV对图片进行颜色分割,要分割的图片如下:

HSV格式中,H表示与颜色有关的,所以如果基于颜色分割的话,主要是对H通道进行阈值分割。看图片鸟为一种颜色,背景大致为一种颜色,大致可以猜测H通道的直方图有两个波峰,且背景像素对于小鸟像素,所以选择幅值较小的波峰即为小鸟所在区域:
下面编写代码实现相关的内容:

 img_hsv = cv2.cvtColor(img2,cv2.COLOR_BGR2HSV)H,S,V = cv2.split(img_hsv)plt.bar([i for i in range(256)],calHist(H))plt.show()

首先来看一下H通道的直方图:

和预测结果相同,可以看到小波峰主要集中在100附近,所以阈值选择需要在100两边:
下面我们来试试不同阈值选择的结果:不同的阈值为【50,120】、【80-120】、【100,120】

可以看出只要将小波峰完全包进阈值选择范围内就可以选择出来小鸟。
然后利用这个掩码对图像做位与操作:

res = cv2.bitwise_and(img,img,mask=mask)

得到分割出来的小鸟:

完整的代码如下:

def split_baseColor(img):img_blur = cv2.blur(img,ksize=(5,5))img_median = cv2.medianBlur(img_blur,5)img_gaussian = cv2.GaussianBlur(img_median,(5,5),0)img2 = cv2.bilateralFilter(img_gaussian,9,75,75)img_hsv = cv2.cvtColor(img2,cv2.COLOR_BGR2HSV)H,S,V = cv2.split(img_hsv)plt.bar([i for i in range(256)],calHist(H))plt.bar([i for i in range(256)],calHist(S))plt.bar([i for i in range(256)],calHist(V))plt.show()low = np.array([50,0,0])high = np.array([120,255,255])mask = cv2.inRange(img_hsv,low,high)res = cv2.bitwise_and(img,img,mask=mask)s = np.hstack((img,res))s = cv2.pyrDown(s)show(s)

OpecCV颜色分割相关推荐

  1. 使用纯JavaCV实现颜色分割 / 轮廓提取 / 离焦 / 线性旋转变焦模糊 / 灰度化 / 标注等处理

    年底冲KPI很多项目要结项,临时被拉去开发了一些"很有意思"的项目,感觉自从离开学校以后很长时间都没有再接触过图像处理领域了,有点跟熟悉的陌生人打交道的快感.这里简单记录一下相关代 ...

  2. opencv学习笔记9:根据图片颜色分割图像

    根据图片颜色分割图像 程序目的 有一张图片,底色是蓝色的,感兴趣的区域是灰色的,需要对图片按颜色分割. 事实上按颜色分割图片在HSV通道上分割效果要远远优于在BGR通道上分割,如何获取某种颜色的HSV ...

  3. 六、HSV颜色空间应用实例——颜色分割提取与替换

    教程汇总:python基础入门系列 通过之前的章节(四.OpenCV颜色空间--HSV颜色模型),我们已经初步认识了HSV颜色空间的特性与优势,现在就来看两个典型的应用实例,颜色分割提取 与 颜色替换 ...

  4. HSV颜色分割,RGB与HSV颜色空间的关系

    1前言 在图像处理中,最常用的颜色空间是RGB模型,常用于颜色显示和图像处理,三维坐标的模型形式,非常容易被理解. 而HSV模型,是针对用户观感的一种颜色模型,侧重于色彩表示,什么颜色.深浅如何.明暗 ...

  5. C++ OpenCV 基于HSV颜色分割区域、获取目标

    C++ OpenCV 基于HSV颜色分割区域.获取目标 读取图片 // An highlighted block Mat img = imread("E:/Data_image/螺丝-线1/ ...

  6. 基于颜色分割的盲道识别算法

    基于颜色分割的盲道识别算法 前言   本任务的要求是通过相关算法识别出城市区域中的盲道,通过对各种盲道进行调研,发现目前城市中的盲道基本分为两大部分,一类是具有明显样色和纹理特征的盲道,通常是黄色(当 ...

  7. 使用OpenCV中的色彩空间进行颜色分割

    在本教程中,我们将学习Computer Vision中使用的流行色彩空间,并将其用于基于颜色的分割. 1975年,匈牙利专利HU170062引入了一种难题,在43,252,003,274,489,85 ...

  8. AR学习笔记(七):阈值二值化优化与颜色分割的优化

    AR学习笔记(七):阈值二值化优化与颜色分割的优化 阈值二值化的优化 当前方案 图像预处理 阈值二值化 优化方案 otsu法 顶帽变换 分块阈值法 颜色分割的优化 当前方案 优化方案 HSV模型分割 ...

  9. opencv-python——2(颜色分割(RGB、HSV)、读取摄像头和视频并保存)

    前言 关于opencv读取图片等基本操作可以查看opencv-python基础操作汇总--1(读取.画线.平移,旋转缩放.翻转和裁剪等操作) 颜色分割(RGB) 可以通过cv2.split来分割RGB ...

最新文章

  1. 数组模拟栈和队列板子
  2. 【Word】一些实用的小技巧
  3. dbhelper的使用
  4. selenium模拟登录豆瓣和qq空间
  5. Pentium的指令系统(5)——调用/转移/循环控制/中断指令
  6. 让计算机启动更快的十五招
  7. ubuntu安装gcc和g++
  8. 关于NRF24L01模块使用的部分个人总结
  9. Win10 企业版 LTSC 安转.appx的方式
  10. ftp上传工具 免安装,3款最好用的ftp上传工具 免安装
  11. 连线被拒,请检查主机名称和埠号,并确定 postmaster 可以接受 TCP/IP 连线
  12. turtle画哆啦A梦(不止一个哦 多个有趣的画)
  13. win10下使用Linux(ubuntu18.04)
  14. linux下下载fnl数据,python处理FNL数据的grib文件和nc文件(纬度存储的问题)
  15. [arm-linux]使用arm驱动hp1020激光打印机
  16. 南京大学量子计算机陈教授,南京大学于扬教授应邀访问武汉物数所
  17. mac pro 键帽 方向键 上下键 拆卸
  18. 去除bootstrap的table样式中单元格边框线
  19. Webstorm2018激活和汉化
  20. 经纬度坐标转为度分秒

热门文章

  1. 虚拟专题:联邦学习 | 联邦学习隐私保护研究进展
  2. 提高软件开发、软件维护的效率和质量的利器
  3. 作者:李海英(1976-),女,中国信息通信研究院互联网法律研究中心主任,中国互联网协会互联网法治工作委员会副秘书长。...
  4. 【程序设计】程序错误类型
  5. 【计算机科学基础】浅析二进制“怪异数”
  6. UOJ#419. 【集训队作业2018】圆形(格林公式)
  7. Python数据可视化的10种技能
  8. 黑客专用Linux发行版Kali Linux发布滚动更新版2016.1
  9. Mybatis if标签判断大小
  10. Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种...