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...