因此,我的代码执行了非常基本的图像处理形式,并将字符串存储到图像中。
它主要是通过将图像转换为numpy数组(x * y * 3),然后首先使每个数字元素为奇数来实现的。
因此,数组现在就像:
Validator.required
现在我要做的是将要存储的文本转换为二进制数据,并根据需要将数组尽可能多地修改为具有奇校验的元素,以表示0甚至是1。
现在我只是用一个简单的程序将其读回。
代码如下:
Validator.required
我的问题是我无法优化代码的上循环,因为它需要大约16秒钟才能完成(使用800x600x3图片矩阵)。另外,与上端相比,我的下端循环超级快。
有没有办法使用一些Numpy魔术来优化我的上循环?
答案 0 :(得分:1)
您可以使用bitwise arithmetic。使所有像素为奇数可以在一行中完成:
arr |= 1
嵌入您的位字符串:
arr.ravel()[:len(long_array)] += np.array(long_array, arr.dtype)
顺便说一句,由于溢出,添加一个会造成明显的像素变化。例如,鲜红色(255,1,1)将变为黑色(0,2,2)。您可以通过减一来避免这种情况。