You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python解码C# GZipStream压缩的OpenCV Mat序列化数据失败如何解决

问题解决办法

问题根源

你当前的处理逻辑跳过了GZip解压的核心步骤,C#侧的完整数据处理链路为:

OpenCV Mat → PNG编码字节 → Base64编码字符串 → GZip压缩 → 压缩后二进制转Base64字符串(即你拿到的jsonToken)

你直接将jsonToken做Base64解码得到的是GZip压缩后的二进制数据,并非PNG图片的原始字节,所以cv2.imdecode会返回None。

正确实现代码

import base64
import gzip
import numpy as np
import cv2

jsonToken = r'uAoAAB+LCAAAAAAABADtls3SsrgWhS+IASogOOiB/GgS/gkqMlMUgkFEEGK8+o7v1931DU7VqTqzU9UMfDS1srPY2dmx3pthwmbutnqsxRPgHXF2lfj28xNU1vrniceHr34HPrPGifeJur4q5nqHdocErlnx0YH8eA2fZwhrsz4q2epTEWRSyjESqDjO0VogzpFPK/yDWgD69I5jJLDFKYLOL1ABGyFKLYGfIOa/sf6XWJGbAaDW9kzmUryc6FDcpQMGmbYGaKIGka8J4ZmGYFnC9co1ahpOs+JKpXRhE6O6zQg/qtdIzLuNp9YGmgWgfr8wTcImDzVaBAF3wkTxU5KP2MSRflTPZ1rsbtInBAttu4HRqLPTNX5jW78bfkudHZEWEphoOKYyOtsKTzKk3GU2N9o5z7Xe8OGYeih8L+4c7JEy7hi2NM8gS3DIUELbQv0gv6f9x1ZjHZq7RtKzdakBSCflpG4U+KaNsVTWkrYZ7hMIl24GW7phmpLUmmP0Ys0c9NT7vAogU79OpvDFbmPco4PQ4KdmGo+vBnlCQwpPplaNp3DF5oudzMchWFF5J5bvi3DVhMazF9qoQa6heZal4732OTjmguqfeoBgQG27OcZRnpYuZ2zJ72PSkPecBkXr2XSCeQczcDmJBMVT+GSknjXXS0DsVfcTEOrWXmMHJ13sJl4N/nPoztQ8Xva5pSCLLXW+OeH2vTjQ04xGn2GA8xcq2/Mx6U5YDjG71ayRioaAVYOM15vAy3/gILj6RbQXfEZ22rtYW19Bd4gbHhvhwWi2dDQu884NUGBourU74/P3XdmBTp92QHRAURsd0yDHkRcc0/1fLPNEdiemuPwmJSWR9hQYTUZkweJvUsH5b2xlcNLWrw4YqrJGw0OhQL14dDujKdMzGLxgS9gYd6ckspuCXFl9zVzVejUbY0zY5ux6mt8S9x5nPI/svKiezo0UZMnqqgjm3HrgcMPh2XJNpmYQESg+yQAfwCZFdXeqZQYfLyg0rmd5pLDuvIap/Sqqq1OJ9dsXVMG6Gx6FY3dFfZ3dqq+GsDicc9Tj0GTe2d2aa6G9//KaiD3+eq3FHn+9bjaN/fXqCt3X6+4eBzw1wv13fqS9R9POY9mNvv5A58kiMNAtoE2G8G8usceEx+wFp+97jYxIV8S2Zxdo7mTvhU/6/Mba6NhThTAe4NQ+C3PL6xD3bJZB2CEZYM0MRI6XPzluafbNsTOjylvkdnNKSiC2Uzklcnhl7chqqViRcN5sjU62L73ra/YIlEN85lkRjgZdiPoo9l0wF/Whn61zjz1NOTifBS0/1YDKAcqtecRzUReuzeZPTsMEkOWeQuMeibOAkg6WIDvhBqcRsEVd/07zhLsvy1Pyw8sp6f9h/FPqp1kjXV5kI2rUUD0L/X526OBfh+5G0bGY53aEaqad+Vas9Z4vaLATR30aoPtCWQuOMTilU+iy6sru12JO1pcmMPrenn6dc12xX3k6uUumLVIdi/4RMGWx0zn59gZpRs+ftvDnTWQ8z7aceyu0FXMsJU9ld8H0hWhntsFGR+LJHpbjhrVS7CJvNRvtFbdzVIp+VI7xGfVvZbw13NbMWXiZHcd4giNRhlrsq9YZ0Yq6YigoSTaQBgf6qzBlGtZYVlMz6mnKD0xPNedBJ0n00KW2MfohLKSkRp788p3DmEzQJO8ND3MYheV7Xoh75PZpjTxDG1oZumzv+S53o1BmTdEccKR4ag5QR2+rmWQn/JpD+TJVvlFVNFAs1c9oTLtBVSAzHP8egK24MB493VdiCK42xS0EEY+jREEeYVKacKz1hQ+4G2Il6ElgtDf6+lzVtIRQC4x68HXuh2kp7okFT6DceXYgChwBOVGP7bcd/H/ey//G+q+x5KpcbVeiPaTR+Gbfv6AmSnaa01NUVdUff/wJwhGNxbgKAAA='

# 1. 第一次Base64解码,得到GZip压缩后的二进制数据
gzipped_data = base64.b64decode(jsonToken)
# 2. GZip解压,得到原始的PNG对应的Base64字符串
png_base64_str = gzip.decompress(gzipped_data).decode('utf-8')
# 3. 第二次Base64解码,得到PNG图片原始字节
png_bytes = base64.b64decode(png_base64_str)
# 4. 转numpy数组后解码图片
img = cv2.imdecode(np.frombuffer(png_bytes, dtype=np.uint8), cv2.IMREAD_UNCHANGED)

步骤对应说明

  • 步骤1+2对应C#侧代码的Utils.StringCompressor.DecompressString(jsonToken.ToString())
  • 步骤3对应C#侧代码的Convert.FromBase64String(res)
  • 步骤4对应C#侧代码的Cv2.ImDecode(data, ImreadModes.Unchanged)

内容的提问来源于stack exchange,提问作者andife

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:18:02