Zlib:第一次压缩后压缩大小减小

问题描述

我正在尝试压缩open-cv库捕获的图像帧。但是,在第一次迭代之后,压缩因子(diff_in_len / original_len)显着降低。为什么我会看到这种奇怪的行为?

压缩系数从84%降低到54%,然后稳定在〜40%

我首先要对框架进行酸洗,压缩,然后对其进行解压缩并解刺。我在任何迭代中都没有例外,这意味着压缩或初始帧没有任何问题,而且原始字节流长度在所有迭代中都完全相同。前2帧的压缩因子仍然比其他帧小。

while True:
   check,frame=vc.read()
   print("Frame: {}".format(frame_no))

   bytestream = pickle.dumps(frame)
   print("Original len: {}".format(len(bytestream)))

   c_bytestream = zlib.compress(bytestream,6)
   print("Compressed len: {}".format(len(c_bytestream)))

   u_bytestream = zlib.decompress(c_bytestream)

   compression_factor = ((len(bytestream)-len(c_bytestream))/len(bytestream))*100
   print("Compression factor: {}".format(compression_factor))

   try:
      cv2.imshow('client',pickle.loads(u_bytestream))
      print("displayed")
   except Exception as e:
      print(e)

   cv2.waitKey(10)
   frame_no+=1
   print("++++++++++++++++++++++++=")

输出

Frame: 0
Original len: 921764
Compressed len: 142641
Compression factor: 84.52521469703743
displayed
++++++++++++++++++++++++=
Frame: 1
Original len: 921764
Compressed len: 421162
Compression factor: 54.30912901783971
displayed
++++++++++++++++++++++++=
Frame: 2
Original len: 921764
Compressed len: 551544
Compression factor: 40.16429368037806
displayed
++++++++++++++++++++++++=
Frame: 3
Original len: 921764
Compressed len: 545085
Compression factor: 40.86501534015214
displayed
++++++++++++++++++++++++=
Frame: 4
Original len: 921764
Compressed len: 548948
Compression factor: 40.445927591010275
displayed
++++++++++++++++++++++++=
Frame: 5
Original len: 921764
Compressed len: 548948
Compression factor: 40.445927591010275
displayed
++++++++++++++++++++++++=
Frame: 6
Original len: 921764
Compressed len: 561018
Compression factor: 39.136481789264934
displayed
++++++++++++++++++++++++=

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)