我想更改像素,但是新图像文件中的像素与我更改过的像素不同。
当我一一检查循环时,像素正确更改,但是当我创建新图片时,像素有所不同。
我该如何解决问题?
def str2bin(data):
strbin = []
for i in data:
strbin.append(format(ord(data), '08b'))
return strbin
def hide_str(img, data):
datalist = str2bin(data)
lendata = len(datalist)
h, w, ch = 0, 0, 0
for i in range(lendata):
for j in range(0, 8):
if ch > 2:
ch = 0
w += 1
val = img[h, w]
if (datalist[i][j] == '0') & ( val[ch] % 2 != 0):
val[ch] -= 1
if (datalist[i][j] == '1') & ( val[ch] % 2 == 0):
val[ch] += 1
ch += 1
img[h, w] = tuple(val)
return img
例如,我的字符串是= "T"
,我的字符串二进制是{"01010100"
:
img = cv2.imread("image.jpg")
img[0, 0] output [0, 0, 0]
cv2.imwrite("image2.jpg", hide_str(img, str))
img2 = cv2.imread("image2.jpg")
img2[0, 0] output [0, 9, 0]
其他像素与我想要的相同。