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冒泡排序算法的实现代码
Nov 21 Python
Python的Flask框架的简介和安装方法
Nov 13 Python
Windows下安装python2和python3多版本教程
Mar 30 Python
python使用pycharm环境调用opencv库
Feb 11 Python
python中的内置函数max()和min()及mas()函数的高级用法
Mar 29 Python
Python Selenium 之关闭窗口close与quit的方法
Feb 13 Python
python交易记录链的实现过程详解
Jul 03 Python
django的auth认证,authenticate和装饰器功能详解
Jul 25 Python
Django框架安装方法图文详解
Nov 04 Python
在matplotlib中改变figure的布局和大小实例
Apr 23 Python
Python 基于jwt实现认证机制流程解析
Jun 22 Python
python 代码运行时间获取方式详解
Sep 18 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中如何同时使用session和cookie来保存用户登录信息
2013/07/05 PHP
使用Composer安装Yii框架的方法
2016/03/15 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(基于jquery)
2015/11/18 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
2016/12/02 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
js实现以最简单的方式将数组元素添加到对象中的方法
2017/12/20 Javascript
vue计算属性及使用详解
2018/04/02 Javascript
通过jquery的ajax请求本地的json文件方法
2018/08/08 jQuery
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
js判断密码强度的方法
2020/03/18 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队LGD晋级之路
2018/04/07 DOTA
Python解析网页源代码中的115网盘链接实例
2014/09/30 Python
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
python编程培训 python培训靠谱吗
2018/01/17 Python
python正则表达式及使用正则表达式的例子
2018/01/22 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
Python调用接口合并Excel表代码实例
2020/03/31 Python
python实现邮件循环自动发件功能
2020/09/11 Python
报关简历自我评价怎么写
2013/09/19 职场文书
父母寄语大全
2014/04/12 职场文书
平安建设汇报材料
2014/12/29 职场文书
文艺节目主持词
2015/07/06 职场文书
致运动员加油稿
2015/07/21 职场文书
正确的理解和使用Django信号(Signals)
2021/04/14 Python
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL
在Windows Server 2012上安装 .NET Framework 3.5 所遇到的问题
2022/04/29 Servers