Python读取YUV文件,并显示的方法


Posted in Python onDecember 04, 2018

Python读取YUV格式文件,并使用opencv显示的方法

opencv可以读取的图片类型比较多,但大多是比较常见的类型,比如".jpg"和".png",但它不能直接读取YUV格式的文件,需要通过python读取YUV文件,并进行相应的转换后,才能被opencv读取,并进行后续相应的处理.

话不多说,直接上程序。

import cv2
from numpy import * 
import Image 
screenLevels = 255.0 
def yuv_import(filename,dims,numfrm,startfrm): 
 fp=open(filename,'rb') 
 blk_size = prod(dims) *3/2 
 fp.seek(blk_size*startfrm,0) 
 Y=[] 
 U=[] 
 V=[] 
 print dims[0] 
 print dims[1] 
 d00=dims[0]//2 
 d01=dims[1]//2 
 print d00 
 print d01 
 Yt=zeros((dims[0],dims[1]),uint8,'C') 
 Ut=zeros((d00,d01),uint8,'C') 
 Vt=zeros((d00,d01),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) 
if __name__ == '__main__':
 width=1280
 height=720
 data=yuv_import('test.yuv',(height,width),1,0) 
 YY=data[0][0] 
 cv2.imshow("sohow",YY)
 cv2.waitKey(0)

如果YUV文件需要转换为PIL的image格式,那么只需在main函数中,进行稍微的处理。

YY=data[0][0] 
im=Image.frombytes('L',(720,1280),YY.tostring())

另外,如果PIL的image想转换为opencv的mat格式,只需将PIL转换为矩阵的形式。

im_array = np.array(im)
# 也可以用 np.asarray(im) 区别是 np.array() 是深拷贝,np.asarray() 是浅拷贝

以上这篇Python读取YUV文件,并显示的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python登录pop3邮件服务器接收邮件的方法
Apr 30 Python
Python实现网络端口转发和重定向的方法
Sep 19 Python
详解python 发送邮件实例代码
Dec 22 Python
Python set常用操作函数集锦
Nov 15 Python
python多线程并发让两个LED同时亮的方法
Feb 18 Python
django创建简单的页面响应实例教程
Sep 06 Python
python实现简易淘宝购物
Nov 22 Python
pytorch点乘与叉乘示例讲解
Dec 27 Python
Python如何使用字符打印照片
Jan 03 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
Jan 06 Python
如何使用Python破解ZIP或RAR压缩文件密码
Jan 09 Python
Python如何省略括号方法详解
Mar 21 Python
对Python3+gdal 读取tiff格式数据的实例讲解
Dec 04 #Python
用python代码将tiff图片存储到jpg的方法
Dec 04 #Python
浅谈python下tiff图像的读取和保存方法
Dec 04 #Python
对python3新增的byte类型详解
Dec 04 #Python
对Python3中bytes和HexStr之间的转换详解
Dec 04 #Python
python 实现数字字符串左侧补零的方法
Dec 04 #Python
Python发送邮件功能示例【使用QQ邮箱】
Dec 04 #Python
You might like
PHP print类函数使用总结
2010/06/25 PHP
个人写的PHP验证码生成类分享
2014/08/21 PHP
基于php实现的验证码小程序
2016/12/13 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
javascript下数值型比较难点说明
2010/06/07 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
window.location不跳转的问题解决方法
2014/04/17 Javascript
js实现可得到不同颜色值的颜色选择器实例
2015/02/28 Javascript
JQuery中Text方法用法实例分析
2015/05/18 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
2016/01/14 Javascript
Vue利用canvas实现移动端手写板的方法
2018/05/03 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
Python实现对比不同字体中的同一字符的显示效果
2015/04/23 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
Python StringIO及BytesIO包使用方法解析
2020/06/15 Python
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
物流管理系毕业生求职信
2014/06/03 职场文书
小学教师2014年度工作总结
2014/12/03 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
青岛导游词
2015/02/12 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书
Python天气语音播报小助手
2021/09/25 Python
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server
python区块链实现简版工作量证明
2022/05/25 Python
Vue2项目中对百度地图的封装使用详解
2022/06/16 Vue.js
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript