0
を放送し、私はLSB numpyのアレイを介したステガノグラフィ方法をコーディングしようとしています。私は、ウィッヒはxor_maskを構築するために、よりコンパクトな方法があります。1.リメイクforループnumpyのに
import numpy as np
from scipy.misc import imread
import matplotlib.pyplot as plt
message = 'Hello, World!'
message_bits = np.array(map(bool, map(int, (''.join(map('{:b}'.format, bytearray(message)))))), dtype=np.bool)
img = imread('screenshot.png')
xor_mask = np.zeros_like(img, dtype=np.bool)
ind = 0
for j, line in enumerate(xor_mask):
for i, column in enumerate(line):
if ind < len(message_bits):
xor_mask[j, i, 0] = message_bits[ind]
ind += 1
else:
break
else:
continue
break
img[xor_mask] ^= 1
とXORする必要があり、赤チャンネルのこれらのビットを、与えるブール・インデックス・マスクを作るコードを得ましたか。たぶん、numpyの放送を通じて
はUPD: 私のforループこれまで低減:
for j, line in enumerate(xor_mask):
if ind < len(message_bits):
xor_mask[j, :, 0] = message_bits[ind]
ind += len(xor_mask[j])
else:
break
私はdこれはパッディングなしで「フラット」を使用しています。しかし、この場合、 'np.reshape'があなたに与えるように、行と列の大小順序を選択することはできません。 – szym