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

【python】RGB to YUV and YUV to RGB

在这里插入图片描述

文章目录

  • 1、YUV
  • 2、YUV vs RGB
  • 3、RGB to YUV
  • 4、YUV to RGB
  • 附录——YUV NV12 vs YUV NV21
  • 参考

1、YUV

YUV 颜色空间,又常被称作 YCbCr 颜色空间,是用于数字电视的颜色空间,在 ITU-R BT.601、BT.709、BT.2020 标准中被明确定义,这三种标准分别针对标清、高清、超高清数字电视。Y是亮度,Cb(U)、Cr(V)表示色度,三个分量是相互独立的,它们分别表示图像的亮度、蓝色色差和红色色差。

Y 分量表示图像的亮度信息,它描述了图像的明暗程度,是黑白电视信号需要的内容。

U 分量表示蓝色色差,它描述了蓝色和绿色之间的差异,用于还原图像中的蓝色和绿色。

V分量表示红色色差,它描述了红色和绿色之间的差异,用于还原图像中的红色和绿色。

在广播电视中,使用 YCbCr 可解决黑白电视和彩色电视之间的信号兼容问题。


YUV 格式的发展初衷是为了解决彩色电视机与黑白电视的兼容问题。在彩色电视出现之前,电视信号只有亮度(Y)信息,即黑白信号。

彩色电视规格制定时,采用 YUV/YIQ 格式来处理彩色电视图像,把 UV 视作表示彩度的C(Chrominance或Chroma)。

如果忽略 C 信号,剩下的 Y 信号就跟之前的黑白电视信号相同,这样彩色电视机就能与黑白电视机兼容。

此外,利用人类眼睛对亮度变化的敏感性高于对颜色变化的敏感性这一生理特性,YUV 格式允许降低色度的带宽,从而降低了传输带宽。

2、YUV vs RGB

在这里插入图片描述

3、RGB to YUV

以 BT601: 标清数字电视(SDTV) 8bit 为例

在这里插入图片描述

import cv2
import numpy as npdef merge(u, v):if u.shape == v.shape:uv = np.zeros(shape=(u.shape[0], u.shape[1] * 2))for i in range(u.shape[0]):for j in range(u.shape[1]):uv[i, 2 * j] = u[i, j]uv[i, 2 * j + 1] = v[i, j]return uvelse:print("u 和 v 的 shape 不相等")def img2yuv(img, dtype):if img.ndim == 3:b = img[:, :, 0]g = img[:, :, 1]r = img[:, :, 2]y = (0.299*r + 0.587*g + 0.114*b)u = (-0.169*r - 0.331*g + 0.5*b + 128)[::2, ::2]v = (0.5*r - 0.419*g - 0.081*b + 128)[::2, :

相关文章:

  • 隐私计算时代B端页面安全设计:数据脱敏与权限体系升级路径
  • RT-Thread内核组成——内核移植
  • 小白成长之路-Linux Shell脚本练习
  • Linux实战篇、第一章_02若依前后端部署之路(前端)
  • 谷歌Sign Gemma: AI手语翻译,沟通从此无界!
  • 快捷键的记录
  • python入门(2)
  • 使用 Laravel 中的自定义存根简化工作
  • 计算机组成原理-存储器的概述
  • 快速上手 Metabase:从安装到高级功能实战
  • 解决国产GD32下载的工程无法编译
  • 基于 GWAS 的群体遗传分析将 bZIP29 确定为玉米中的异种基因
  • SpringBoot 配置加载顺序?
  • Cursor学习-Java环境配置
  • 不等式是否满足约束并输出最大差 - 华为OD机试真题(JavaScript 题解)
  • 运维_集运维核心学习
  • MCP详解及协议的使用(python版本和Node版本)
  • AGV|无人叉车工业语音播报器|预警提示器LBE-LEX系列性能与接线说明
  • 《光子技术成像技术》第二章 预习2025.6.7
  • 低代码平台前端页面表格字段绑定与后端数据传输交互主要有哪些方式?华为云Astro在这方面有哪些方式?
  • 汽车网站建设费用/郑州网络推广平台有哪些
  • 做upc条形码的网站/海外推广营销平台
  • 1元做网站方案/哪个公司的网站制作
  • 如何开淘宝店做国外网站/京东关键词优化技巧
  • wordpress页面位置/成都做整站优化
  • 户外旅游网站模板/百度推广托管公司