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 def函数的定义、使用及参数传递实现代码
Aug 10 Python
Python实现简单拆分PDF文件的方法
Jul 30 Python
Python爬取APP下载链接的实现方法
Sep 30 Python
Python实现求数列和的方法示例
Jan 12 Python
python合并同类型excel表格的方法
Apr 01 Python
Python使用pyodbc访问数据库操作方法详解
Jul 05 Python
Sanic框架Cookies操作示例
Jul 17 Python
django框架之cookie/session的使用示例(小结)
Oct 15 Python
Python数据类型之Set集合实例详解
May 07 Python
Python + Requests + Unittest接口自动化测试实例分析
Dec 12 Python
使用Python发现隐藏的wifi
Mar 04 Python
如何基于Django实现上下文章跳转
Sep 16 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的面向对象编程
2006/10/09 PHP
PHP新手上路(十四)
2006/10/09 PHP
PHP 简单数组排序实现代码
2009/08/05 PHP
PHP 获取MySQL数据库里所有表的实现代码
2011/07/13 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
使用jquery给input和textarea设定ie中的focus
2008/05/29 Javascript
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
在javascript中实现函数数组的方法
2013/12/25 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
AngularJS HTML DOM详解及示例代码
2016/08/17 Javascript
JS制作图形验证码实现代码
2020/10/19 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
vue-for循环嵌套操作示例
2019/01/28 Javascript
微信小程序实现form表单本地储存数据
2019/06/27 Javascript
js实现坦克移动小游戏
2019/10/28 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
python交互式图形编程实例(二)
2017/11/17 Python
DataFrame中的object转换成float的方法
2018/04/10 Python
python斐波那契数列的计算方法
2018/09/27 Python
Python中栈、队列与优先级队列的实现方法
2019/06/30 Python
Django实现前台上传并显示图片功能
2020/05/29 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
e路東瀛(JAPANiCAN)香港:日本旅游、日本酒店和温泉旅馆预订
2018/11/21 全球购物
幼儿园教师个人反思
2014/01/30 职场文书
《金色的脚印》教后反思
2014/04/23 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书
优秀教师申报材料
2014/12/16 职场文书
爱心捐助活动总结
2015/05/09 职场文书
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android
springboot如何接收application/x-www-form-urlencoded类型的请求
2021/11/02 Java/Android
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python
Redis数据同步之redis shake的实现方法
2022/04/21 Redis