我尝试了多种不同的变体,但是由于某些原因,我不断收到无效的二进制数字(人类可读)输出到文件:
img_array = np.asarray(imageio.imread('test.png', as_gray=True), dtype='int8')
img_array.astype('int8').tofile("test.dat")
但这不会产生有效的二进制文件。将文件读入Verilog tb后,它会抱怨无效的二进制数字,当我打开文件时,我看到一堆数字和其他字符。看起来好像翻译不正确。
更新: 跑步后
print(img_array)
print(img_array.tobytes())
我可以看到int值'43'正在被转换为'+',而我期望的是'2B'。似乎只将某些值打印为ASCII。这是一个简单的示例:
x = np.array([[0, 9], [2, 3]], dtype='uint8')
print(x.astype('uint8'))
print(x.tobytes())
输出为:
[[0 9]
[2 3]]
b'\ x00 \ t \ x02 \ x03'
我该如何解决?
任何帮助将不胜感激。
我尝试过的其他解决方案:
答案 0 :(得分:0)
https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.tobytes.html
img_array = np.asarray(imageio.imread('test.png', as_gray=True), dtype='int8')
img_array = img_array.astype('int8')
with open('test.dat', 'wb') as f:
f.write(img_array.tobytes())
答案 1 :(得分:0)
这提供了一个可行的解决方案,可以转换为十六进制值的字符串。这并不是我想要的,但是由于我的原始问题尚未得到解答,因此它可以解决问题。尽管我找不到此解决方案,所以我可以参考它的来源,但无论如何我都会在这里分享。显然,它也可以处理带符号整数:
@Component({
selector: 'your-selector',
templateUrl: './yourtemplate.html',
styleUrls: ['./yourstyle.css']
})