二进制转换后将十进制数字数组转换为 8 个数字数组



我正在读取灰度的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])

希望有帮助!!

最新更新