在python中創建了一個rtsp客戶端,它接收h264流並將單個h264原始幀作爲二進制字符串返回。我正在嘗試處理每個h264幀。opencv單個h264原始幀作爲二進制字符串
我不成功地嘗試了幾種方法將此幀轉換爲numpy數組進行處理。
到目前爲止,我知道cv2.VideoCapture只接受一個文件名作爲它的參數,而不是一個幀既不是一個StringIO對象(像指向緩衝區的文件那樣的文件),但我需要傳遞給它我的字符串。
我也曾嘗試類似:
nparr = np.fromstring(frame_bin_str, np.uint8)
img_np = cv2.imdecode(nparr, cv2.CV_LOAD_IMAGE_COLOR)
試圖diferent標誌。但也失敗了。
經過許多其他失敗的嘗試,我跑出了想法。
總結我需要做的事情:我在一個變量中有一個h264原始幀,我需要創建一個openvc有效的numpy數組,或者以某種方式結束包含該單幀的VideoCapture對象,這樣我就可以處理框架。
任何指針將不勝感激。
希望這一切都有道理。
預先感謝您
afaik openCV不支持h264原始格式。在我們當前的項目中,有人編寫了一些代碼,逐幀讀取這些文件(跳轉到給定幀號的字節位置),並根據h264格式規則手動解釋字節信息以獲取openCV可用數據。 – Micka
謝謝你的迴應Micka。如果我將這些幀轉儲到帶有「\ x0 \ x00 \ x00 \ x001」分隔符的文件中。並從中創建一個VideoCapture對象。所有的作品都很完美。我可以逐幀閱讀和檢索並正確處理它們。所以我認爲支持在那裏。我不知道如何加載一個單一的框架,而不是一個文件。 – user3202342