国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Python讀取YUV文件,并顯示的方法

2020-02-15 23:55:48
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Python讀取YUV格式文件,并使用opencv顯示的方法

opencv可以讀取的圖片類型比較多,但大多是比較常見(jiàn)的類型,比如".jpg"和".png",但它不能直接讀取YUV格式的文件,需要通過(guò)python讀取YUV文件,并進(jìn)行相應(yīng)的轉(zhuǎn)換后,才能被opencv讀取,并進(jìn)行后續(xù)相應(yīng)的處理.

話不多說(shuō),直接上程序。

import cv2from 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文件需要轉(zhuǎn)換為PIL的image格式,那么只需在main函數(shù)中,進(jìn)行稍微的處理。

YY=data[0][0] im=Image.frombytes('L',(720,1280),YY.tostring()) 

另外,如果PIL的image想轉(zhuǎn)換為opencv的mat格式,只需將PIL轉(zhuǎn)換為矩陣的形式。

im_array = np.array(im)# 也可以用 np.asarray(im) 區(qū)別是 np.array() 是深拷貝,np.asarray() 是淺拷貝

以上這篇Python讀取YUV文件,并顯示的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林站長(zhǎng)站。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 许昌县| 美姑县| 岳池县| 台中市| 仁布县| 浮山县| 双江| 黔南| 茌平县| 同江市| 吉木乃县| 贞丰县| 全椒县| 东乌珠穆沁旗| 马山县| 平山县| 宝丰县| 岳池县| 灌云县| 东乌珠穆沁旗| 普宁市| 淄博市| 沂源县| 尼木县| 蓝山县| 阳新县| 正蓝旗| 托里县| 杂多县| 宁南县| 新晃| 日照市| 镇安县| 呼玛县| 嘉鱼县| 南宁市| 横峰县| 大丰市| 施秉县| 策勒县| 孟州市|