python图片格式NV12,RGB相互转换。

embedded/2024/10/23 20:20:06/

一 背景

	最近需要把图片nv12格式转换为rgb,因为NV12格式存储占空间比较小,采集时候存储NV12格式,现在需要把NV12格式转换为RGB格式。

二 代码

1 NV12 转 RGB

python">import os
import cv2
import numpy as npdef nv12_to_rgb(nv12_path, save_path, width, height):nv12_data = np.fromfile(nv12_path, dtype=np.uint8)nv12_data = nv12_data.reshape((height * 3 // 2 , width))rgb_data  = cv2.cvtColor(nv12_data, cv2.COLOR_YUV2BGR_NV12)cv2.imwrite(save_path, rgb_data)cv2.imshow('bgr', rgb_data)cv2.waitKey(-1)cv2.destroyAllWindows()if __name__ == '__main__':nv12_path = '~/test.nv12'save_path = '~/2.bmp'width = 1280height = 720nv12_to_rgb(nv12_path, save_path, width, height)

在上述代码中,需要修改图片宽高,因为你存NV12格式时候,就知道图片的大小。注意修改。

2 RGB 转 NV12

python">import os
import cv2
import shutilimport numpy as npdef RGB_To_NV12(img_path, save_path):img = cv2.imread(img_path)b, g, r = cv2.split(img)Y = (0.299 * r + 0.587 * g + 0.114 * b).astype(np.uint8)U = (- 0.1687 * r - 0.3313 * g + 0.5 * b + 128).astype(np.uint8)V = (0.5 * r - 0.4187 * g - 0.0813 * b + 128).astype(np.uint8)U = U[::2,:]V = V[::2,:]U[:,1::2] = V[:,1::2]YUV = np.vstack((Y,U))YUV.tofile(save_path)if __name__ == '__main__':img_path  = '~/test.bmp'save_path = '~/test.nv12'RGB_To_NV12(img_path, save_path)

http://www.ppmy.cn/embedded/129894.html

相关文章

【文心智能体 | AI大师工坊】如何使用智能体插件,完成一款智能体的开发

文章目录 前言一、智能体运行效果二、如何制作智能体 前言 在这个日新月异的时代,人工智能技术正如星辰般璀璨,迅速渗透到我们生活的方方面面。🌠 从智能家庭设备到无人驾驶汽车,从精准医疗诊断到个性化教育辅导,AI正…

英雄联盟也裁员了。。。

大家好,我是鸭鸭! 想不到裁员的风刮到了《英雄联盟》。 2009 年,《英雄联盟》上线,直至今天它还活跃在网吧屏幕上。 有多少游戏可以经历 15年?对于《英雄联盟》来说,也许用“传奇”这个词更加合适。但如…

windows mysql 8.0版本重置root密码

1.停止mysql服务 以管理员运行cmd 2.安全模式启动 mysqld --console --skip-grant-tables --shared-memory 3.修改密码 再开个cmd窗口就可以进入了:mysql 先进入mysql database:use mysql 修改密码:ALTER USER rootlocalhost IDENTIFIED …

2011年国赛高教杯数学建模B题交巡警服务平台的设置与调度解题全过程文档及程序

2011年国赛高教杯数学建模 B题 交巡警服务平台的设置与调度 有困难找警察”,是家喻户晓的一句流行语。警察肩负着刑事执法、治安管理、交通管理、服务群众四大职能。为了更有效地贯彻实施这些职能,需要在市区的一些交通要道和重要部位设置交巡警服务平台…

《深度学习》OpenCV EigenFaces算法 人脸识别

目录 一、EigenFaces算法 1、什么是EigenFaces算法 2、原理 3、实现步骤 1)数据预处理 2)特征提取 3)构建模型 4)识别 4、优缺点 1)优点 2)缺点 二、案例实现 1、完整代码 运行结果&#xff…

docker 发布镜像

如果要推广自己的软件,势必要自己制作 image 文件。 1 制作自己的 Docker 容器 基于 centos 镜像构建自己的 centos 镜像,可以在 centos 镜像基础上,安装相关的软件,之后进行构建新的镜像。 1.1 dockerfile 文件编写 首先&…

Android Settings 设置项修改

Settings 设置项 在 Android 系统上,WRITE_SETTINGS 这个权限从 API 1 就已经开始有了。 通过在 app 中设置权限 android.permission.WRITE_SETTINGS 允许 app 读/写 系统设置。 在官方文档的描述中,还有一段注意事项: Note: If the app targets API level 23 or higher,…

[项目详解][boost搜索引擎#1] 概述 | 去标签 | 数据清洗 | scp

目录 一、前言 二、项目的相关背景 三、搜索引擎的宏观原理 四、搜索引擎技术栈和项目环境 五、正排索引 VS 倒排索引--原理 正排索引 分词 倒排索引 六、编写数据去除标签和数据清洗模块 Parser 1.数据准备 parser 编码 1.枚举文件 EnumFile 2.去标签ParseHtml(…