如何更改图像中的像素?

时间:2019-05-01 19:49:15

标签: python python-3.x cv2

我想更改像素,但是新图像文件中的像素与我更改过的像素不同。

当我一一检查循环时,像素正确更改,但是当我创建新图片时,像素有所不同。

我该如何解决问题?

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]

其他像素与我想要的相同。

0 个答案:

没有答案