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中查找excel某一列的重复数据 剔除之后打印
Feb 10 Python
Python中的CURL PycURL使用例子
Jun 01 Python
Python中获取对象信息的方法
Apr 27 Python
Python实现的Excel文件读写类
Jul 30 Python
Python实现一个服务器监听多个客户端请求
Apr 12 Python
python3学习之Splash的安装与实例教程
Jul 09 Python
python添加模块搜索路径和包的导入方法
Jan 19 Python
python实现文件助手中查看微信撤回消息
Apr 29 Python
python多线程同步实例教程
Aug 11 Python
keras中的卷积层&池化层的用法
May 22 Python
Python数据结构之队列详解
Mar 21 Python
python如何读取和存储dict()与.json格式文件
Jun 25 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
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
php常用的url处理函数总结
2014/11/19 PHP
php根据日期显示所在星座的方法
2015/07/13 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
jquery动画2.元素坐标动画效果(创建一个图片走廊)
2012/08/24 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
javascript中闭包(Closure)详解
2016/01/06 Javascript
Bootstrap每天必学之弹出框(Popover)插件
2016/04/25 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
实例解析js中try、catch、finally的执行规则
2017/02/24 Javascript
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
详解JavaScript 为什么要有 Symbol 类型?
2019/04/03 Javascript
json.stringify()与json.parse()的区别以及用处
2021/01/25 Javascript
粗略分析Python中的内存泄漏
2015/04/23 Python
go和python变量赋值遇到的一个问题
2017/08/31 Python
numpy.linspace 生成等差数组的方法
2018/07/02 Python
python 日期排序的实例代码
2019/07/11 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
2020/03/06 Python
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
2012/12/19 HTML / CSS
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
飞利浦法国官网:Philips法国
2019/07/10 全球购物
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
毕业生的自我评价
2013/12/30 职场文书
教师现实表现材料
2014/02/14 职场文书
大二学生自我检讨书
2014/10/23 职场文书
工作后的感想
2015/08/07 职场文书
关于实现中国梦的心得体会
2016/01/05 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python
Java spring单点登录系统
2021/09/04 Java/Android