天天头条:python如何实现RGB到YU444的转换?python实现RGB到YUV444的转换方法
要通过python将RGB转成YUV444。
文章目录
(资料图片)
安装ffmpeg安装ffmpy在pythong中使用ffmpeg实现RGB到YUV444的转换RGB到YUV的转换python读取YUV文件 opencv提供了RGB转YUV的工具,如果不在乎是哪一种YUV采样方式,直接使用以下的方式即可:
import cv2img = cv2.imread(img_path)img_YUV= cv2.cvtColor(img, cv2.COLOR_BGR2YUV)img_YCrCb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
opencv中的YUV是YUV420,并不支持YUV444。YUV420和YCrCb的差异,可以参考这篇文章
了解到ffmpeg支持python,且可以实现RGB到YUV444的转换,本文主要介绍一下整个过程如何实现。
安装ffmpeg
sudo apt-get install ffmpeg
安装ffmpy
pip install ffmpy
在python中使用ffmpeg,其实就是讲ffmpeg指令放入ffmpy中, 并在命令行中执行代码。
说明和使用样例可以参见以下链接。 ffmpy文档
在pythong中使用ffmpeg实现RGB到YUV444的转换
首先在命令行中输入
ffmpeg -pix_fmts
可以查看ffmpeg所有支持的格式,这边仅读取部分示意。
FLAGS NAME NB_COMPONENTS BITS_PER_PIXEL-----IO... yuv420p 3 12IO... yuyv422 3 16IO... rgb24 3 24IO... bgr24 3 24IO... yuv422p 3 16IO... yuv444p 3 24IO... yuv410p 3 9IO... yuv411p 3 12IO... gray 1 8IO..B monow 1 1IO..B monob 1 1I..P. pal8 1 8IO... yuvj420p 3 12IO... yuvj422p 3 16IO... yuvj444p 3 24IO... uyvy422 3 16..... uyyvyy411 3 12IO... bgr8 3 8.O..B bgr4 3 4IO... bgr4_byte 3 4IO... rgb8 3 8.O..B rgb4 3 4IO... rgb4_byte 3 4IO... nv12 3 12IO... nv21 3 12IO... argb 4 32IO... rgba 4 32IO... abgr 4 32IO... bgra 4 32...
RGB到YUV的转换
下面定义的函数可以实现RGB到YUV的转换
import osimport cv2from ffmpy import FFmpegdef convert(img_path,H,W,output_path):size = "{}x{}".format(W,H)ff = FFmpeg(inputs={img_path,None},outputs={output_path:"-s {} -pix_fmt yuv444p".format(size)})print(ff.cmd)ff.run()def main():img_bgr = cv2.imread(img_path)H,W = img_bgr[:2]convert(img_path,H,W,"test.yuv")#执行后在指定路径中将生成test.yuv文件if __name__ == "__main__":main()
再执行过一次后,由于指定路径已存在test.yuv文件,再次执行时,汇报exited with status 1的错。更改路径、文件名或者将路径中的同名文件删除即可解决。
python读取YUV文件
由于ffmpeg执行后的结果是保存一个yuv文件,我们还需要一个函数来读取yuv文件供后续使用。
import numpy as npfrom matplotlib import pyplot as pltdef yuv_read(filename,dims,numfrm,startfrm): fp=open(filename,"rb") blk_size = int(np.prod(dims) *3/2) fp.seek(blk_size*startfrm,0) Y=[] U=[] V=[] print(dims[0]) print(dims[1]) d00=dims[0] #如果是YUV420,此处为 d00=dims[0] //2 d01=dims[1] #如果是YUV420,此处为 d01=dims[1] //2 print(d00) print(d01) Yt=np.zeros((dims[0],dims[1]),np.uint8,"C") Ut=np.zeros((d00,d01),np.uint8,"C") Vt=np.zeros((d00,d01),np.uint8,"C") for i in range(numfrm): for m in range(dims[0]): for n in range(dims[1]): #print m,n Yt[m,n]=ord(fp.read(1)) for m in range(d00): for n in range(d01): Ut[m,n]=ord(fp.read(1)) for m in range(d00): for n in range(d01): Vt[m,n]=ord(fp.read(1)) Y=Y+[Yt] U=U+[Ut] V=V+[Vt] fp.close() return (Y,U,V)def main():data = yuv_read("test.yuv",(H,W),1,0)# 查看Y\U\V分量plt.figure()plt.subplt(1,3,1)plt.imshow(data[0][0])# Y分量plt.subplt(1,3,2)plt.imshow(data[1][0])# U分量plt.subplt(1,3,3)plt.imshow(data[2][0])# V分量plt.show
标签:
相关推荐:
最新新闻:
- 天天头条:python如何实现RGB到YU444的转换?python实现RGB到YUV444的转换方法
- win7系统提示actionscript错误如何解决?解决actionscript错误解决方法_焦点热讯
- CMNET和CMWA有什么区别?一文读懂CMNET和CMWA的区别|天天新动态
- 如何提升英文SEO的谷歌排名?英文网站如何优化?_环球头条
- 今日热议:如何解决建行网银盾无法识别?建行网银盾无法识别的解决办法
- 【报资讯】android动态添加权限6.0+-记录开发过程
- 全球通讯!登录进程初始化失败 Windows7系统无法登录怎么办?
- 新站上线前如何挑选核心关键词?网站关键词的选择和优化设置技巧-全球新消息
- 通讯!集成Windows身份验证的几种方法 你知道几个?
- 天天看热讯:格式工厂最新版2.30版发布 免费使用任意传播的万能多媒体
- 360云盘怎么转存百度云盘?360云盘转存百度云盘详细步骤|环球今热点
- 手机不开机、定屏、无故黑屏怎么办?教你一招
- ipad和iphone有什么区别?ipad的UI排版有哪些不同?
- 如何快速解决打印机喷头堵塞问题?清洗打印机喷头方法
- JS类型转换常见方法有哪些?JS类型转换常见方法集合
- eboot.bin文件结构分析——WINCE系统
- 网站建站推广怎么做?推广流程及技巧 每日热门
- 腾讯手机管家怎么样?腾讯手机管家详情介绍
- 联通4G跳到3G无法上网原因是什么?如何恢复4G上网?
- 微动态丨拼多多猜拳游戏怎么玩?怎么进入游戏界面?
- 如何使用iPhone手机的各种技巧?超全面iPhone实用技巧汇总
- iPodnano7值不值得购买?iPod nano7配置介绍_当前消息
- 碳纤维发热电缆电地暖怎么样?碳纤维地暖和发热电缆电地暖有什么区别?:要闻
- 3322域名如何注册?注册方法有哪些?
- Vista、win7、win8的区别是什么?详情介绍
- 什么是家庭影院?家庭影院的播放系统有哪些?
- 抗侧力构件弹性位移如何计算?如何防止钢结构厂房的基础下沉?-世界热资讯
- 500G硬盘价格多少?500G硬盘品牌价钱性能介绍
- 如何使用PTDD分区表?详细教程介绍
- 有哪些指标可以评估搜索引擎的质量?搜索引擎质量评测 天天新视野
- 热推荐:springmvc的强大之处:SpringMVC
- 【钻石杯】中国女篮63-51大胜欧洲劲旅拉脱维亚女篮
- 丢失msvcr100.dll文件如何解决?MSVCR100.dll文件解决办法
- 要闻:【论文推荐】远程屏幕监控系统项目分析
- 全球新动态:联想乐PadA14.0预览版泄露 刷机升级方法大揭秘
- miui12.5内测答案是什么?怎么申请miui12.5内测版本?-当前短讯
- 诺基亚800c如何刷机?800c诺基亚刷机步骤介绍及刷机方法-焦点播报
- 焦点热讯:多立方浴霸有什么优点?多立方浴霸优点详细介绍
- 录音软件哪个好?推荐几款最常用的录机软件
- 续航200KM的九号电动车长啥样?
- 【全球独家】舒乐康空气净化器怎么样?空气净化效果好吗?
- 如何安装笔记本的双硬盘?笔记本双硬盘安装步骤
- 如何用指针申请动态内存?函数的参数是一个指针吗?
- 知识点补充:什么是互质?互质的详情介绍
- 局域网上任意主机怎么控制?软件实现局域网流量控制
- 华为手机如何管理应用权限?华为手机管理应用权限步骤|全球观察
- 为什么会有Base64编码?编码之Base64编码
- 360极速浏览器如何导出数据和收藏夹?360极速浏览器导出数据和收藏夹
- 怎么将电脑的进程隐藏起来?隐藏进程怎么设置?|重点聚焦
- 社交领域火爆出圈 Soul向港交所递交上市申请:当前通讯
- 颜值无敌!小龟王2023新款电摩1228元|全球速看料
- 续航200KM的九号电动车长啥样?
- 为什么我们会突然被别人超越? 天天聚看点
- 卡位iPad!曝三星将于今年推出首款可折叠平板电脑Galaxy Z Tab
- 全球快看:Win11将允许你从任务栏强制退出应用程序
- 环球热资讯!老电脑升级首选 8G DDR3不到35元
- 4080游戏本13999
- 车库转合同范本(通用5篇) 每日关注
- 卡普空大阪开设新工作室 拥有全国最大的动捕工作室
- 开启预售!影驰K8 pro星曜娘联名款键盘来啦!
- 双接口 海康威视128GU盘37.9元_今日热文
- 世界观热点:长续航 雅迪欧曼2099元
- JBL蓝牙无线耳机179元 快看
- 环球新资讯:超过一半的密码AI破解不到1分钟
- 世界资讯:睾丸恶性间皮瘤
- 精选!Xbox公布精英2青春版手柄宣传片 玩家:精英3呢?
- 《最终幻想:像素重制版》容量揭晓 NS版5.7G
- 乙烷电子式示意图_乙烷电子式
- 沃尔玛XSX迷你冰箱48美元 游戏玩家的零食神器 当前快报
- 《马里奥》电影大爆!分析师称任天堂将获利3.5亿刀
- 水平接近ChatGPT!昆仑万维国产大语言模型来了
- 【天天时快讯】《异形工厂2》Steam页面上线 支持中文发售日期待定
- 全球今日报丨《小美人鱼》真人电影人类公主剧照 比黑人鱼好看多了
- 传PS5掌机Q-Lite今年11月发售 200美元左右
- 天天最新:SIE:PS5和XSX的游戏性能对比非常影响玩家