您好,登錄后才能下訂單哦!
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文件,并顯示的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。