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操作xml文件示例
Apr 07 Python
简单介绍Python2.x版本中的cmp()方法的使用
May 20 Python
Python实现保证只能运行一个脚本实例
Jun 24 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
Jun 30 Python
Django学习教程之静态文件的调用详解
May 08 Python
python 对dataframe下面的值进行大规模赋值方法
Jun 09 Python
解决python3读取Python2存储的pickle文件问题
Oct 25 Python
python处理multipart/form-data的请求方法
Dec 26 Python
对python实现二维函数高次拟合的示例详解
Dec 29 Python
Django对接支付宝实现支付宝充值金币功能示例
Dec 17 Python
PyCharm使用Docker镜像搭建Python开发环境
Dec 26 Python
详解python环境安装selenium和手动下载安装selenium的方法
Mar 17 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 中常量的知识整理
2017/04/14 PHP
php array 转json及java 转换 json数据格式操作示例
2019/11/13 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
Firebug入门指南(Firefox浏览器)
2010/08/21 Javascript
基于jquery的一个浮动框(扩展性比较好 )
2010/08/27 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)
2016/08/23 Javascript
浅析JavaScript动画模拟拖拽原理
2016/12/09 Javascript
树结构之JavaScript
2017/01/24 Javascript
node.js实现登录注册页面
2017/04/08 Javascript
Vue 组件间的样式冲突污染
2017/08/31 Javascript
vue-router传递参数的几种方式实例详解
2018/11/13 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
Django给admin添加Action的步骤详解
2019/05/01 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
房地产财务部员工岗位职责
2014/03/12 职场文书
初三开学计划书
2014/04/27 职场文书
读书活动总结
2014/04/28 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
2014年爱国卫生工作总结
2014/11/22 职场文书
三好学生评语大全
2014/12/29 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
一行代码python实现文件共享服务器
2021/04/22 Python
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python
详解Java实践之建造者模式
2021/06/18 Java/Android
MySQL系列之二 多实例配置
2021/07/02 MySQL
JavaScript 定时器详情
2021/11/11 Javascript