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 除法小技巧
Sep 06 Python
django进阶之cookie和session的使用示例
Aug 17 Python
Puppeteer使用示例详解
Jun 20 Python
python的一些加密方法及python 加密模块
Jul 11 Python
Django模板语言 Tags使用详解
Sep 09 Python
Python socket实现的文件下载器功能示例
Nov 15 Python
Python脚本导出为exe程序的方法
Mar 25 Python
Python进行统计建模
Aug 10 Python
python 实现图片修复(可用于去水印)
Nov 19 Python
基于Python 函数和方法的区别说明
Mar 24 Python
python 离散点图画法的实现
Apr 01 Python
分享Python异步爬取知乎热榜
Apr 12 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 遍历文件实现代码
2011/05/04 PHP
PHP setTime 设置当前时间的代码
2012/08/27 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
理解JavaScript的caller,callee,call,apply
2009/04/28 Javascript
javascript delete 使用示例代码
2010/03/29 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
js获取url中"?"后面的字串方法
2014/05/15 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
2016/04/01 Javascript
javascript创建对象的几种模式介绍
2016/05/06 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
微信小程序开发之IOS和Android兼容的问题
2017/09/26 Javascript
JavaScript模块模式实例详解
2017/10/25 Javascript
vue 实现复制内容到粘贴板clipboard的方法
2018/03/17 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
理理Vue细节(推荐)
2019/04/16 Javascript
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
JavaScript类的继承多种实现方法
2020/05/30 Javascript
Python通过poll实现异步IO的方法
2015/06/04 Python
基于Python log 的正确打开方式
2018/04/28 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
python如何实现读取并显示图片(不需要图形界面)
2020/07/08 Python
泰国健康和美容服务预订网站:GoWabi
2019/06/03 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
Java面向对象面试题
2016/12/26 面试题
查环查孕证明
2014/01/10 职场文书
30年同学聚会感言
2014/01/30 职场文书
高三毕业评语
2014/12/31 职场文书
海弦WR-800F
2022/04/05 无线电