回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>有没有人对如何打包头并将其附加到某个数据块有什么建议?在</p>
<p>例如,如果我有一个16字节的位压缩头,然后我想将它附加到大约2MB的原始RGB图像中,那么最有效的方法是什么?在</p>
<p>到目前为止,我尝试了以下方法</p>
<pre><code>headerVals = ( str(headerVersion), str(formatEnum), frameCount, ntpTimestamp, width, height )
packedHdr = self.imgStruct.pack( *headerVals )
return packedHdr + data
</code></pre>
<p>但是,由于str和numpy数组不可合并,因此失败并出现以下错误:</p>
^{pr2}$
<p>作为一个Python初学者,我认为解决这个问题的唯一方法是,由于明显的原因,以下方法非常缓慢:</p>
<pre><code># 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 )
</code></pre>
<p>有什么想法吗?作为一个Python创始者,我发现自己有点困惑!在</p>
<p>更新:</p>
<p>根据下面seth的建议,我将我的代码更新到了下面,它运行得很好。在</p>
<pre><code># 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 )
</code></pre>