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中的生成器和yield详细介绍
Jan 09 Python
Python中用memcached来减少数据库查询次数的教程
Apr 07 Python
python中子类继承父类的__init__方法实例
Dec 15 Python
python的pdb调试命令的命令整理及实例
Jul 12 Python
numpy.std() 计算矩阵标准差的方法
Jul 11 Python
opencv python 2D直方图的示例代码
Jul 20 Python
python实现的按要求生成手机号功能示例
Oct 08 Python
Python3实现配置文件差异对比脚本
Nov 18 Python
Python callable内置函数原理解析
Mar 05 Python
浅谈python量化 双均线策略(金叉死叉)
Jun 03 Python
详解python内置模块urllib
Sep 09 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
Sep 28 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
Protoss建筑一览
2020/03/14 星际争霸
聊天室php&mysql(三)
2006/10/09 PHP
支持oicq头像的留言簿(一)
2006/10/09 PHP
php 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
js操作iframe父子窗体示例
2014/05/22 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
vue2.0 和 animate.css的结合使用
2017/12/12 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
js实现QQ邮箱邮件拖拽删除功能
2020/08/27 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
python生成器,可迭代对象,迭代器区别和联系
2018/02/04 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
基于Python List的赋值方法
2018/06/23 Python
详解Python with/as使用说明
2018/12/13 Python
Python多线程获取返回值代码实例
2020/02/17 Python
Django Admin后台添加数据库视图过程解析
2020/04/01 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
计算机求职自荐信范文
2014/04/19 职场文书
小学校长竞聘演讲稿
2014/05/16 职场文书
西柏坡导游词
2015/02/05 职场文书
乒乓球比赛通知
2015/04/27 职场文书
2015年语文教师工作总结
2015/05/25 职场文书
返乡农民工证明
2015/06/24 职场文书
2016年元旦致辞
2015/08/01 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android