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系统守护进程实例
Feb 03 Python
python导出chrome书签到markdown文件的实例代码
Dec 27 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
Jan 09 Python
numpy.transpose对三维数组的转置方法
Apr 17 Python
python3.6使用pickle序列化class的方法
Oct 22 Python
对python模块中多个类的用法详解
Jan 10 Python
Python列表的切片实例讲解
Aug 20 Python
pytorch 实现在预训练模型的 input上增减通道
Jan 06 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
Jul 01 Python
一文详述 Python 中的 property 语法
Sep 01 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
Jan 05 Python
详解OpenCV曝光融合
Apr 29 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警告Creating default object from empty value 问题的解决方法
2014/04/02 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
PHP pear安装配置教程
2016/05/14 PHP
Yii2单元测试用法示例
2016/11/12 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
一个可以随意添加多个序列的tag函数
2009/07/21 Javascript
js 与或运算符 || && 妙用
2009/12/09 Javascript
Jquery常用技巧收集整理篇
2010/11/14 Javascript
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
jquery实现九宫格大转盘抽奖
2015/11/13 Javascript
Javascript基础教程之比较null和undefined值
2016/05/16 Javascript
Javascript实现图片不间断滚动的代码
2016/06/22 Javascript
用jQuery实现可输入多选下拉组合框实例代码
2017/01/18 Javascript
浅谈vue的踩坑路
2017/08/31 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
JS实现的RC4加密算法示例
2018/08/16 Javascript
react build 后打包发布总结
2018/08/24 Javascript
JS中注入eval, Function等系统函数截获动态代码
2019/04/03 Javascript
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
使用python实现rsa算法代码
2016/02/17 Python
python 性能优化方法小结
2017/03/31 Python
Python实现中文数字转换为阿拉伯数字的方法示例
2017/05/26 Python
python中map()函数的使用方法示例
2017/09/29 Python
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
Python程序员面试题 你必须提前准备!
2018/01/16 Python
如何基于python生成list的所有的子集
2019/11/11 Python
解决TensorFlow GPU版出现OOM错误的问题
2020/02/03 Python
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
大学生通用个人的自我评价
2014/02/10 职场文书
优秀员工推荐信
2014/05/10 职场文书
买房协议书范本
2014/10/23 职场文书
中秋节随笔
2015/08/15 职场文书
浅析InnoDB索引结构
2021/04/05 MySQL
Java实现扫雷游戏详细代码讲解
2022/05/25 Java/Android