2017-08-08 146 views
-5

我是使用python進行視頻處理的初學者。Numpy輸出解釋

我從相機拍攝的原始視頻數據,我需要檢查視頻是否有它的亮點或暗幀。

到目前爲止,我所取得的成就是我可以使用Python中numpy的讀取原始視頻。 以下是我的代碼。

import numpy as np 
fd = open('my_video_file.raw', 'rb') 
rows = 4800 
cols = 6400 
f = np.fromfile(fd, dtype=np.uint8,count = rows*cols) 
im = f.reshape((rows,cols)) #notice row, column format 
print im 
fd.close() 

輸出:

[[ 81 82 58 ..., 0 0 0] [ 0 0 0 ..., 0 0 0] 
[ 0 0 0 ..., 0 0 0] ..., [141 128 136 ..., 1 2 2] 
[ 40 39 35 ..., 192 192 192] [190 190 190 ..., 74 60 60]] 

基於陣列或numpy的輸出上,是有可能來檢查原始視頻數據是否具有暗(亮度低)的幀或不。

也請告訴我這是什麼的numpy的輸出(打印IM)是什麼意思? 如果您有任何我可以參考的鏈接,歡迎提供。

+0

修復您的代碼,請。線路正在收斂。 –

+0

您的視頻幀有多少個頻道?他們是灰度還是彩色框? –

+0

基於這樣的事實:1)你的代碼(和你的輸出)顯然不是從任何解釋器出來的,但可能來自網頁的crtl-v'd,2)你甚至不知道要問什麼 - 我假設你在問任何有關視頻處理的問題之前,你可能需要先閱讀python,numpy和[問]。只是一個提示,讓你開始 - 視頻通常有長度,寬度和*時間* - 所以你需要閱讀至少一個更多維 –

回答

1

如果你有帶紅色,綠色和藍色通道的彩色幀,即NxMx3矩陣,那麼你可以將這個矩陣從RGB表示轉換爲HSV(Hue,Saturation,Value)表示,這也將是NxMx3矩陣。然後你可以從這個矩陣中取出Value頁面,即這個矩陣的第三個通道,並計算這個矩陣中所有元素的平均值。設置0.5的閾值,如果平均值小於這個值,那麼這個幀可以被認爲是黑暗的。

閱讀HSV here

爲RGB向量轉換爲HSV載體可以使用matplotlib.colors.rgb_to_hsv(arr)功能。

0

剛上你的問題一點見解。 (您可能想要閱讀更多有關數字圖像表示的文章,e.g. here)。您的視頻幀以uint8格式讀取,即像素編碼值介於0到255之間。

通常,較高的值表示較亮的像素。根據您的視頻,您可以使用@Batyrkhan Saduanov提及的彩色或非彩色幀。所以你想要做的是定義最小和最大的層次來聲明幀爲「黑暗」或「明亮」。

在的情況下,非彩色的,你可以很容易地使用每一幀的平均像素值,一個ASIGN閾值水平爲:

if