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中使用Flask、MongoDB搭建简易图片服务器
Feb 04 Python
Python制作钉钉加密/解密工具
Dec 07 Python
Python决策树和随机森林算法实例详解
Jan 30 Python
Python实现确认字符串是否包含指定字符串的实例
May 02 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
May 29 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
Aug 22 Python
python3实现名片管理系统
Nov 29 Python
使用python实现语音文件的特征提取方法
Jan 09 Python
pandas中DataFrame修改index、columns名的方法示例
Aug 02 Python
python mysql中in参数化说明
Jun 05 Python
如何写python的配置文件
Jun 07 Python
Python爬虫基础之简单说一下scrapy的框架结构
Jun 26 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
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
PHP 和 MySQL 开发的 8 个技巧
2007/01/02 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
PHP+Mysql无刷新问答评论系统(源码)
2016/12/20 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
2017/06/27 PHP
php图片裁剪函数
2018/10/31 PHP
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
2013/11/18 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
2015/08/24 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
详解网站中图片日常使用以及优化手法
2017/01/09 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
python解析xml文件实例分享
2013/12/04 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
python面向对象实现名片管理系统文件版
2019/04/26 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
个人找工作的自我评价
2013/10/17 职场文书
军训教官感言
2014/03/02 职场文书
机关党建工作汇报材料
2014/08/20 职场文书
司机岗位职责
2015/02/04 职场文书
导游词300字
2015/02/13 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
2019年幼儿园家长接送责任书
2019/10/29 职场文书
django上传文件的三种方式
2021/04/29 Python
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
一篇文章弄懂Python关键字、标识符和变量
2021/07/15 Python