Python读取YUV文件,并显示的方法
程序员文章站
2022-03-21 14:04:48
python读取yuv格式文件,并使用opencv显示的方法
opencv可以读取的图片类型比较多,但大多是比较常见的类型,比如".jpg"和".png",但它不能直接读...
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读取txt文件数据的方法(用于接口自动化参数化数据)
-
python 读取dicom文件,生成info.txt和raw文件的方法
-
android从资源文件中读取文件流并显示的方法
-
python下载文件时显示下载进度的方法
-
python读取目录下所有的jpg文件,并显示第一张图片的示例
-
python使用xlrd模块读取xlsx文件中的ip方法
-
python读取json文件并将数据插入到mongodb的方法
-
python通过wxPython打开一个音频文件并播放的方法
-
python实现获取客户机上指定文件并传输到服务器的方法
-
C#实现读取DataSet数据并显示在ListView控件中的方法