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获取Linux下文件版本信息、公司名和产品名的方法
Oct 05 Python
Python的collections模块中namedtuple结构使用示例
Jul 07 Python
Python sqlite3事务处理方法实例分析
Jun 19 Python
python和ruby,我选谁?
Sep 13 Python
python实现的汉诺塔算法示例
Oct 23 Python
pytorch方法测试——激活函数(ReLU)详解
Jan 15 Python
解决Pycharm的项目目录突然消失的问题
Jan 20 Python
Python 基于jwt实现认证机制流程解析
Jun 22 Python
python 如何引入协程和原理分析
Nov 30 Python
基于tensorflow __init__、build 和call的使用小结
Feb 26 Python
python flask开发的简单基金查询工具
Jun 02 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
Apr 08 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中调用其他系统http接口的方法说明
2014/02/28 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
phplot生成图片类用法详解
2015/01/06 PHP
PHP开启opcache提升代码性能
2015/04/26 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
自制轻量级仿jQuery.boxy对话框插件代码
2010/10/26 Javascript
jquery里的正则表达式说明
2011/08/03 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
2017/07/04 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
2017/11/01 Javascript
Nodejs下使用gm圆形裁剪并合成图片的示例
2018/02/22 NodeJs
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
[43:41]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
python每隔N秒运行指定函数的方法
2015/03/16 Python
Python的__builtin__模块中的一些要点知识
2015/05/02 Python
Django自定义认证方式用法示例
2017/06/23 Python
详解Python中如何写控制台进度条的整理
2018/03/07 Python
Python3实现的字典遍历操作详解
2018/04/18 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
python 初始化一个定长的数组实例
2019/12/02 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
仿酷狗html5手机音乐播放器主要部分代码
2013/05/15 HTML / CSS
新西兰最大的品牌运动鞋购物网站:Platypus NZ
2017/10/27 全球购物
法国设计制造的扫帚和刷子:Andrée Jardin
2018/12/06 全球购物
mysql有关权限的表都有哪几个
2015/04/22 面试题
个人求职信范例
2014/01/29 职场文书
文秘人员工作职责
2014/01/31 职场文书
cf收人广告词
2014/03/14 职场文书
求职简历自荐信
2014/06/18 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
Canvas跟随鼠标炫彩小球的实现
2021/04/11 Javascript
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript
【海涛dota解说】DCG联赛第一周 LGD VS DH
2022/04/01 DOTA