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 sys模块sys.path使用方法示例
Dec 04 Python
用Python的SimPy库简化复杂的编程模型的介绍
Apr 13 Python
python3+PyQt5重新实现QT事件处理程序
Apr 19 Python
Python 判断图像是否读取成功的方法
Jan 26 Python
Python中的十大图像处理工具(小结)
Jun 10 Python
在cmd中查看python的安装路径方法
Jul 03 Python
windows10在visual studio2019下配置使用openCV4.3.0
Jul 14 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
Aug 07 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 Python
Pycharm安装Qt Design快捷工具的详细教程
Nov 18 Python
python中numpy.empty()函数实例讲解
Feb 05 Python
Python基础知识学习之类的继承
May 31 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中把stdClass Object转array的几个方法
2014/05/08 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
php 截取中英文混合字符串的方法
2018/05/31 PHP
用一段js程序来实现动画功能
2007/03/06 Javascript
jquery提示 "object expected"的解决方法
2009/12/13 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
vue+vux实现移动端文件上传样式
2017/07/28 Javascript
node+koa实现数据mock接口的方法
2017/09/20 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
2017/09/28 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
2017/12/29 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
2018/10/08 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
python使用chardet判断字符串编码的方法
2015/03/13 Python
go语言计算两个时间的时间差方法
2015/03/13 Python
Python脚本实现自动发带图的微博
2016/04/27 Python
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
Python命令行参数解析工具 docopt 安装和应用过程详解
2019/09/26 Python
基于python 等频分箱qcut问题的解决
2020/03/03 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
中国最大的潮流商品购物网站:YOHO!BUY有货
2017/01/07 全球购物
打架检讨书300字
2014/02/02 职场文书
年级组长自我鉴定
2014/02/22 职场文书
优秀班主任申报材料
2014/12/16 职场文书
德能勤绩廉个人总结
2015/02/14 职场文书
校长一岗双责责任书
2015/05/09 职场文书
办公室管理规章制度
2015/08/04 职场文书
2016年基层党支部书记公开承诺书
2016/03/25 职场文书