我有一个十六进制字符串"89-50-4E-47-0D-0A-1A-0A-00-00-00-0D-49"
,具体来说,它包含了一张图片的数据。
我想将其转换为Numpy数组,或者可能从该数据重建一个OpenCV图像。
同时提供了宽度和高度,所以Numpy数组的尺寸已知。
如何从上述字符串构造一个Numpy数组?
我有一个十六进制字符串"89-50-4E-47-0D-0A-1A-0A-00-00-00-0D-49"
,具体来说,它包含了一张图片的数据。
我想将其转换为Numpy数组,或者可能从该数据重建一个OpenCV图像。
同时提供了宽度和高度,所以Numpy数组的尺寸已知。
如何从上述字符串构造一个Numpy数组?
np.fromiter
,并使用int
中的base
参数将单个字符串转换为十六进制,然后使用np.fromiter
中的dtype
参数将其转换为整数类型:s = "89-50-4E-47-0D-0A-1A-0A-00-00-00-0D-49"
np.fromiter((int(x, 16) for x in s.split('-')), dtype=np.int32)
# array([137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73])
分割
,并将单个十六进制数转换为int
。>>> import numpy as np
>>> hext_str = "89-50-4E-47-0D-0A-1A-0A-00-00-00-0D-49"
>>> np.array([int(x, 16) for x in hex_str.split("-")])
array([137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73])
假设(n, m)
是您的图像的尺寸,您可以使用np.array
的.reshape((n, m))
方法对结果进行处理。
import numpy as np
arr = np.array([int(x, 16) for x in "89-50-4E-47-0D-0A-1A-0A-00-00-00-0D-49".split("-")])
print(arr)
format(number, '02x')
(零填充2位十六进制数字符串)。hex_str = "89-50-4E-47-0D-0A-1A-0A-00-00-00-0D-49"
arr = np.fromiter((int(x, 16) for x in hex_str.split('-')), dtype=np.uint8)
# array([137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73],
dtype=uint8)
hex_str = '-'.join((format(x, '02x') for x in arr)).upper()
np.array([int(x, 16) for x in "89-50-4E-47-0D-0A-1A-0A-00-00-00-0D-49".split("-")])
- Olvin Roght