2
我使用numpy的和OpenCV2.4.1,我的IP攝像機具有通過一個回調函數返回的圖片緩存的SDK。 簡化功能如下:numpy的數組運算太慢np.asarray()
def py_fDecodeCallBack(lPort, pBuffer, lSize, pFrameInfo, lReserved1, lReserved2):
frameInfo = pFrameInfo.contents
pBufY = np.asarray(pBuffer[:frameInfo.lHeight*frameInfo.lWidth],dtype=np.uint8).reshape(frameInfo.lHeight,frameInfo.lWidth, 1)
$
p緩衝器是POINTER(c_ubyte)型作爲我使用ctypes的。
我試圖獲取p緩衝器,這是在YV12格式的Y通道,並把它放入一個numpy的陣OpenCV的處理。
然而,在np.asarray()的一大瓶頸,需要花費太長獲取幀數據並放入3D numpy的陣列(高度,寬度,信道)。我已經測試過pBuffer的指針訪問操作來切出Y數據不是瓶頸。這個回調只能在4GB RAM的雙核心計算機上以每秒3幀的速度運行。沒有np.asarray()操作,回調可以以每秒30幀的速度運行。
請建議的方法,以便把p緩衝器數據轉換成3D numpy的陣列,它是速度不夠快就得到每秒30幀。
太謝謝你了!現在它快得多〜 –