Python讀取YUV檔案,並顯示

2021-08-04 07:18:28 字數 1675 閱讀 8312

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讀取yuv格式檔案,並使用opencv顯示的方法 opencv可以讀取的型別比較多,但大多是比較常見的型別,比如 jpg 和 png 但它不能直接讀取yuv格式的檔案,需要通過python讀取yuv檔案,並進行相應的轉換後,才能被opencv讀取,並進行後續相應的處理.話不多說,直接上程...

Python連線MySQL資料庫並讀取顯示資料

建立名為 test 的資料庫 db pymysql.connect host localhost user root passwd your password port 3306 cursor db.cursor 建立游標 cursor.execute create database test de...

Python 讀取檔案並分詞 檔案寫入

1 讀檔案 fr open file.txt for line in fr.readlines line line.strip listfromline line.split 簡單點寫 for line in open file.txt readlines listfromline line.str...