我正在读取灰度的OpenCV图像,所以我有一个数值从0到255的numpy数组。
我必须先将其转换为二进制文件。
寄件人: [dec, dec, dec, dec, dec, dec]
至:[bin, bin, bin, bin, bin, bin]
。
之后,我必须使用二进制 numpy 数组的位构建 8 个 numpy 数组。
[bin[0], bin[0], bin[0], bin[0], bin[0], bin[0]]
[bin[1], bin[1], bin[1], bin[1], bin[1], bin[1]]
[bin[2], bin[2], bin[2], bin[2], bin[2], bin[2]]
[bin[3], bin[3], bin[3], bin[3], bin[3], bin[3]]
[bin[4], bin[4], bin[4], bin[4], bin[4], bin[4]]
[bin[5], bin[5], bin[5], bin[5], bin[5], bin[5]]
问候!
通过这种方式找到了解决方案。
import numpy as np
def toBin(dec):
binary = []
st = 0
while(st < 8):
binary.append(dec%2)
dec = dec//2
st = st + 1
return binary
#Original image is an np.array object with (300x300) shape.
imgA = np.array([[42,0,52,234],[232,123,2,243],[24,231,245,21],[21,213,241,233]])
colsA = imgB.shape[0]
rowsA = imgB.shape[1]
cont = 0
new = []
binA = []
for row in imgA:
for col in row:
new.append(list(reversed(toBin(col))))
cont = cont + 1
if cont == colsA:
cont = 0
binA.append(new)
new = []
npBinA = np.array(binA)
print(npBinA)
输出:Python Shell 中的输出
对不起,如果我的问题没有正确表述。谢谢!。
我认为你需要:
x = [10,2,4,5,7,8]
# convert decimal to binary
b = [bin(i)[2:] for i in x]
arr1 = []
for i in b:
arr1.append([i]*6)
print(arr1)
输出
[['1010', '1010', '1010', '1010', '1010', '1010'],
['10', '10', '10', '10', '10', '10'],
['100', '100', '100', '100', '100', '100'],
['101', '101', '101', '101', '101', '101'],
['111', '111', '111', '111', '111', '111'],
['1000', '1000', '1000', '1000', '1000', '1000']]
不确定我是否理解这个问题。如果要将 int 转换为二进制,可以使用 numpy 函数:
bin1 = np.binary_repr()
这将返回一个字符串,其中包含您的数字的二进制表示形式。如果你想要它作为一个 int,你可以转换它:
first_number = int(bin1[0])
希望有帮助!!