国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 商都县| 山东| 合肥市| 广元市| 平安县| 开鲁县| 武隆县| 茂名市| 舞阳县| 洛川县| 隆安县| 南溪县| 安仁县| 中宁县| 莱芜市| 景洪市| 连南| 安泽县| 多伦县| 盖州市| 偏关县| 衡水市| 博野县| 灵璧县| 梁平县| 凤山市| 陆河县| 贵溪市| 涿州市| 崇义县| 仲巴县| 尚志市| 伊金霍洛旗| 成都市| 会理县| 夹江县| 桐梓县| 河津市| 新野县| 秦皇岛市| 噶尔县|