当前位置: 首页 > news >正文

Python 视频的色彩转换

这篇教学会介绍使用OpenCV 的cvtcolor() 方法,将视频的色彩模型从RGB 转换为灰阶、HLS、HSV...等。

因为程式中的OpenCV 会需要使用镜头或GPU,所以请使用本机环境( 参考:使用Python 虚拟环境) 或使用Anaconda Jupyter 进行实作( 参考:使用Anaconda ) ,并安装OpenCV 函式库( 参考:OpenCV函式库)。

色彩模型是什么?

色彩模型( Color model ) 是一种以数字来表示色彩的数学模型,例如在RGB 的色彩模型里,以(255,0,0) 表示红色,但在HSV 的色彩模型中,红色则是以(0,100,100 ) 来表示,用的色彩模型有:

RGB (红、绿、蓝)

RGB 颜色模型也称做三原色光模型,是一种「加色」模型,将红( Red )、绿( Green )、蓝( Blue ) 三原色的色光以不同的比例相加,混合产生各种色彩的光线通常表现方式会使用(255,255,255) 或十六进位FFFFFF 来表现

RGBA (红、绿、蓝、alpha )

RGBA 颜色模型由RGB 色彩模型和Alpha 通道组成。RGBA 代表红( Red )、绿( Green )、蓝( Blue ) 和Alpha 通道,alpha 通道为影像的不透明度参数,数值可以用百分比、整数或者使用0 到1 的实数表示。例如,若一个像素的Alpha 通道数值为0% 表示完全透明的,无法被看见,如果数值为100% 则是完全不透明

HSV (色相、饱和度、明度)、HSL (色相、饱和度、亮度)

HSL 和HSV 颜色模型都是一种将RGB 色彩模型中的点,转变在圆柱坐标系中的表示法。 HSL 是色相、饱和度、亮度( Hue、Saturation、Lightness ),HSV 是色相、饱和度、明度( Hue、Saturation、Value ),又称HSB ( Brightness )。

HSL 和HSV 模型都把颜色描述在圆柱坐标系内的点,这个圆柱的中心轴取值为自底部的黑色到顶部的白色而在它们中间的是灰色,绕这个轴的角度对应于「色相」 ,到这个轴的距离对应于「饱和度」,而沿着这个轴的高度对应于「亮度」、「色调」或「明度」

GRAY (灰阶)

灰阶是每个像素只有最暗黑色到最亮的白色的灰阶,灰阶影像在黑色与白色之间还有许多级的颜色深度,用于显示的灰阶影像,通常用每个采样像素8bits 的非线性尺度,内容可以包含256 种灰阶( 8bits 表示2 的8 次方= 256 )。

cvtcolor() 色彩转换

使用OpenCV 的cvtcolor() 方法,可以将转换影像色彩,使用方法如下:

cv2.cvtColor(img, code)
# img 来源视频
# code 要转换的色彩空间名称

下方的程式码执行后,会将来源的彩色图片,转换成灰阶视频。

import cv2
img = cv2.imread('meme.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 转换成灰阶视频
cv2.imwrite('oxxo', img)
cv2.waitKey(0)                               # 按下任意键停止
cv2.destroyAllWindows()

下方的程式码执行后,会将来源的彩色影片,转换成灰阶视频。

import cv2
cap = cv2.VideoCapture(0)
if not cap.isOpened():print("Cannot open camera")exit()
while True:ret, frame = cap.read()if not ret:print("Cannot receive frame")breakgray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  # 转换成灰阶视频cv2.imshow('oxxostudio', gray)if cv2.waitKey(1) == ord('q'):break      # 按下 q 键停止
cap.release()
cv2.destroyAllWindows()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • RedisTemplate使用
  • vue实例和容器的一夫一制——04
  • 【项目实战】深入解析HTTP状态码:500 Internal Server Error
  • 【测试开发】--安全渗透测试
  • 判断链表中是否有环(力扣141.环形链表)
  • Spring开发实践(二)
  • 深度学习-梯度下降算法-NLP(五)
  • Ubuntu24.04清理常见跟踪软件tracker
  • Unity Addressable魔改
  • Android 列表视频滑动自动播放—滑动过程自动播放(实现思路)
  • tableau范围-线图与倾斜图绘制 - 14
  • CSS 中的 ::before 和 ::after 伪元素
  • 同三维T80006EH2-4K30编码器视频使用操作说明书:高清HDMI编码器,高清SDI编码器,4K超清HDMI编码器,双路4K超高清编码器
  • vue3项目中浏览器打开本地文档或者下载本地应用的方法(2024-07-11)
  • clean code-代码整洁之道 阅读笔记(第十七章 终章)
  • ----------
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 「面试题」如何实现一个圣杯布局?
  • Android 控件背景颜色处理
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • JavaScript 基本功--面试宝典
  • Java-详解HashMap
  • java中的hashCode
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • python3 使用 asyncio 代替线程
  • React16时代,该用什么姿势写 React ?
  • 编写符合Python风格的对象
  • 给第三方使用接口的 URL 签名实现
  • 基于 Babel 的 npm 包最小化设置
  • 基于web的全景—— Pannellum小试
  • 将回调地狱按在地上摩擦的Promise
  • 物联网链路协议
  • 小程序 setData 学问多
  • 一道面试题引发的“血案”
  • 【干货分享】dos命令大全
  • 2017年360最后一道编程题
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​secrets --- 生成管理密码的安全随机数​
  • #HarmonyOS:Web组件的使用
  • #pragma预处理命令
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转载)Linux网络编程入门
  • .bat批处理(三):变量声明、设置、拼接、截取