目录:

(一)调用转换函数实现图像色彩空间转换------ cv2.cvtColor函数

(二)色彩空间转换,利用inrange函数过滤视频中的颜色,实现跟踪某一颜色

正文:

(一)调用转换函数实现图像色彩空间转换------ cv2.cvtColor函数

cvtColor(src,code,dst=None,dstCn=None),作用:将一幅图像从一个色彩空间转换到另一个色彩,空间参数:code,转换的色彩空间。

BGR---》GRAY,BGR---》HSV,BGR---》YUV,BGR--》YCrCb
 1 # 色彩空间转换
2 def color_space_demo(img):
3 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
4 cv2.imshow("gray", gray)
5 hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
6 cv2.imshow("hsv", hsv)
7 yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)
8 cv2.imshow("yuv", yuv)
9 ycrcb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
10 cv2.imshow("ycrcb", ycrcb)

HSV色彩空间说明: H:0-180  S: 0-255 V: 0-255

(二)色彩空间转换,利用inrange函数过滤视频中的颜色,实现跟踪某一颜色

利用cv2.inRange函数设阈值,这里注意用的颜色空间是hsv。HSV:HSV颜色空间是孟塞尔彩色空间的简化形式,是一种基于感知的颜色模型。它将彩色信号分为3种属性:色调(Hue,H),饱和度(Saturation,S),亮度(Value,V)。色调表示从一个物体反射过来的或透过物体的光波长,也就是说,色调是由颜色的名称来辨别的,如红、黄、蓝;亮度是颜色的明暗程度;饱和度是颜色的深浅,如深红、浅红。

HSV颜色空间反映了人观察色彩的方式,具有两个显著的特点:

  • 亮度分量与图像的彩色信息无关
  • “色调”和“饱和度”分量与人感受颜色的方式是紧密相连的

可以根据右表来确定lower_hsv, upper_hsv的取值。

 1 # -*- coding=GBK -*-
2 import cv2 as cv
3 import numpy as np
4
5
6 def nextrace_object_demo():
7 capture = cv.VideoCapture("G:/1.mp4")#导入视频
8 while True:
9 ret, frame = capture.read()
10 if ret == False:
11 break
12 hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)#转换色彩空间为hsv
13 #设置白色的范围,跟踪视频中的白色
14 lower_hsv = np.array([0, 0, 221])#设置过滤的颜色的低值
15 upper_hsv = np.array([180, 30, 255])#设置过滤的颜色的高值
16 mask = cv.inRange(hsv, lower_hsv, upper_hsv)#调节图像颜色信息(H)、饱和度(S)、亮度(V)区间,选择白色区域
17 cv.imshow("video", frame)
18 cv.imshow("mask", mask)
19 if cv.waitKey(50) & 0xFF == ord('q'):
20 break
21
22 nextrace_object_demo()
23 cv.waitKey(0)
24 cv.destroyAllWindows()、

参考:
https://blog.csdn.net/u011321546/article/details/79533669
https://blog.csdn.net/Vici__/article/details/100714822#12%E3%80%81%E5%BD%A9%E8%89%B2%E7%A9%BA%E9%97%B4%E8%BD%AC%E6%8D%A2

python实现色彩空间转换的更多相关文章

  1. python把汉字转换成拼音实现程序

    python把汉字转换成拼音实现程序 文章一个简洁干的汉字转拼音 程序,复制下载就可以直接使用,有需要的同学可以参考一下下. #coding:utf-8 #基于python2.6 table = 'a ...

  2. Python datatime 格式转换,插入MySQL数据库

    Python datatime 格式转换,插入MySQL数据库 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-11-2 ...

  3. Python中文繁简体转换工具

    Openccpy ___ _____ __ ___ ___ ___ _____ __ __ / __`\/\ '__`\ /'__`\/' _ `\ /'___\ /'___\/\ '__`\/\ \ ...

  4. Python 进制转换 二进制 八进制 十进制 十六进制

    Python 进制转换 二进制 八进制 十进制 十六进制 作者:方倍工作室 地址:http://www.cnblogs.com/txw1958/p/python3-scale.html 全局定义一定不 ...

  5. 使用python制作时间戳转换工具

    使用python制作时间戳转换工具 python 时间戳转日期 日期转时间戳 前言:作为一个程序员一般情况下,json和时间戳是常用的两个工具,我咨询过很多个朋友,他们一般都是通过在线工具对json进 ...

  6. Python进制转换(二进制/八进制/十进制/十六进制)

    Python 进制转换 二进制 八进制 十进制 十六进制 作者:方倍工作室 地址:http://www.cnblogs.com/txw1958/p/python3-scale.html 全局定义 ba ...

  7. python 的 json 转换

    python 的 json 转换 本文为原创文章,禁止转载! 本文以 json.dumps()  和 json.loads() 方法进行 Python 数据和 json 格式之间转换,进行讲解 首先比 ...

  8. Ubuntu16.04系统中不同版本Python之间的转换

    Ubuntu系统自带的版本是2.7.12 安装好python3.6之后,改变一下Python的优先级(需要root权限). 在使用下面这个命令查看电脑里面有几个Python版本 update-alte ...

  9. 妙用python之编码转换

    转自i春秋 文章难易度:★★ 知识点:python.编码转换 前 言 在日常渗透,漏洞挖掘,甚至是CTF比赛中,会遇到各种编码,常常伴随着这些编码之间的各种转换.记得刚入门那个时候,自己处理编码转换问 ...

随机推荐

  1. 关于Servlet

    Servlet与CGI CGI(Common Gateway Interface),早期的Web服务器技术.执行模式:将服务端的资源基于进程运行. Servlet:运行模式改为单进程多线程的形式,利用 ...

  2. Fortran学习笔记:03 数组(Array)

    Fortran学习笔记目录 书接上回:Fortran学习笔记:02 流控制语句 数组(Array) 定义数组 一维数组 program main implicit none integer :: i ...

  3. IO之字符流

    什么是字符流 对于文本文件(.txt .java .c .cpp) 使用字符流处理 注意点 读入的文件一定要存在 否则就会报FileNotFoundException 异常的处理 为了保证流资源 一定 ...

  4. mapboxgl 纠偏百度地图

    缘起 之前分享了mapboxgl 互联网地图纠偏插件,插件当时只集成了高德地图. 文章发布后,有小伙伴在后台留言,希望插件也能支持百度地图. 刚好国庆假期有时间就研究了一下. 插件加载瓦片原理 首先, ...

  5. 无法解析的外部符号之_cvLoadImage,_cvCreateMat,_cvReleaseImage之类

    一个错误可能是:附加依赖项少添加了库函数: 还有一个可能是:配置设置错误了,比如该是64位,却设置成win32了.改过来就好了. 要注意opencv的使用中 在Debug.Release模式以及x64 ...

  6. openGauss X ShardingSphere,分布式方案的另一种最佳实践

    Apache ShardingSphere 持续助力于 openGauss 分布式数据库能力的构建.openGauss 数据库自 2020 年 6 月开源以来,受到了业界的广泛关注,现已吸引众多伙伴. ...

  7. Cartography Tools(制图工具)

    制图工具 1.制图优化 # Process: 分散标记 arcpy.DisperseMarkers_cartography("", "", "EXPA ...

  8. Java基础之(七):Scanner对象

    用户交互Scanner Scanner对象 调用java.util.Scanner 可以通过Scanner类来获取用户的输入 基本语法: Scanner scanner = new Scanner(S ...

  9. Java(42)JDK新特性之接口组成

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201666.html 博客主页:https://www.cnblogs.com/testero ...

  10. float 与 double 类型区别

    https://www.runoob.com/w3cnote/float-and-double-different.html float 单精度浮点数在机内占 4 个字节,用 32 位二进制描述. d ...