有沒有人有關於如何打包頭文件的任何提示,然後將其附加到某些數據塊?例如,如果我有一個16位字節的位填充標頭,然後我想將它附加到大約2MB的原始RGB圖像,那麼執行此操作的最有效方法是什麼?在Python中合併打包的頭文件和numpy數組
到目前爲止,我已經試過以下
headerVals = (str(headerVersion), str(formatEnum), frameCount, ntpTimestamp, width, height)
packedHdr = self.imgStruct.pack(*headerVals)
return packedHdr + data
但是這個失敗,出現以下錯誤,因爲海峽和numpy的陣列的arent concat'able:
return packedHdr + data
TypeError: cannot concatenate 'str' and 'numpy.ndarray' objects
唯一的辦法解決這一點,作爲一名Python初學者,我可以想到下面這些顯而易見的原因是非常緩慢的:
# Generate the header
headerVals = (str(headerVersion), str(formatEnum), frameCount, ntpTimestamp, width, height)
packDir = 'cchqhh{0}h'.format(width*height*3)
return pack(packDir, str(headerVersion), str(formatEnum), frameCount, ntpTimestamp, width, height, *data)
有什麼建議嗎?作爲Python的發起者,我發現自己有點被這個難住了!
UPDATE:
按以下賽斯的建議,我更新了我的代碼以下內容,它是工作很好。
# Generate the header
headerVals = (str(headerVersion), str(formatEnum), frameCount, ntpTimestamp, width, height)
packedHdr = self.imgStruct.pack(*headerVals)
# Concatanate header to the data
return numpy.concatenate((numpy.fromstring(packedHdr, dtype=numpy.uint8), data), axis=0)
爲什麼不把'headerVersion'和'formatEnum'放在一個numpy數組中,然後嘗試連接? – seth
我最終採取了這種方法,它似乎工作。對問題 – bgoldber
添加更改沒關係,我會將我的評論作爲答案。 – seth