编码图像,使用reedsolomon cod

2024-06-10 01:12:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用里德所罗门编码器在Python应用程序中对一幅图像进行编码、发送和添加一些噪声,并对其进行解码

我已将imagage从PIL转换为numpy数组。现在我试着对这个数组进行编码然后解码。但我对密码有问题。太长了。有人知道怎么解决这个问题吗。先谢谢你

错误消息: ValueError:消息长度最大为223。信息是226

import unireedsolomon as rs
from PIL import Image
import numpy as np

class REED
  def __init__(self):

    self.img = None
    self.numpyImg = None


  def loadPictureAndConvertToNumpyArray(self):
    self.img = Image.open('PATH')
    self.img.load()
    self.numpyImg = np.array(self.img)

  def reedSolomonEncode(self):

    coder = rs.RSCoder(255,223)
    self.numpyImg = coder.encode(self.numpyImg)

Tags: imageimportselfnumpy消息编码imgpil
1条回答
网友
1楼 · 发布于 2024-06-10 01:12:24

ReedSolomon包的github页清楚地表明,不能对大于k(本例中是223)的数组进行编码。这意味着您必须先分割图像,然后再对其进行编码。 您可以将其拆分为223个块,然后处理编码的块:

k = 223
imgChunks = np.array_split(self.numpyImg, range(k, self.numpyImg.shape[0], k))
encodedChunks = [coder.encode(chunk) for chunk in imgChunks]

相关问题 更多 >