将图像字节数据流解码为 JPEG

2023-11-29

我正在努力成功地将 JPEG 图像从字节解码回 JPEG。

我从 MJPG 字节流的编码帧开始,我想对其进行解码以便使用 OpenCV 进行操作。我是 Python、numpy、opencv 等方面的新手!

我现在将帧 JPG 数据放在文本文件中: b'\xf\xd8\xff\xdb\x00.... 等用于测试目的:

当我尝试在第 14 行将 numpy 数组的大小调整为原始视频流分辨率 (640, 480) (npFlat.reshape((640,480)) 时,代码似乎失败

**ValueError:无法将大小为 228140 的数组重塑为形状 (640,480)*

import io
import cv2
import numpy as np

BytesFile = open('FrameBytes.txt')
MyBytes=BytesFile.read()
BytesFile.close()

dt=np.dtype(np.unit8)
dt=dt.newbtyeorder('>')

npFlat = np.fromfile('FrameBytes.txt'.dtype=dt)
npResized = npFlat.reshape(640,480,3) #CODE FAILING TO RESIZE AT THIS LINE...
cv.imshow('resized',npResized)

难道即使我的视频帧是从 640、480 源捕获的,但在编码过程中由于某种原因尺寸发生了变化?目前我能想到的就只有这些了。欢迎任何/所有帮助。

我查看了相关帖子:Python - 使用 OpenCV 将字节图像转换为 NumPy 数组但试图避免 PIL,而 frombuffer 方法似乎对我来说也失败了。

好的,我取得了一些进展,现在:

npFlat = np.frombuffer(MyBytes.encode('utf-8'),dtype=np.int8).

现在,当我将 npFlat“重塑”为 (374, 610) 时,我也可以使代码成功。 IE。这样 374 x 610 = 平面 numpy 数组,其长度为 228140...但这一切看起来很奇怪。缓冲区信息代表一个 JPG,我正在尝试重新打开它......但还没有接近。

MyBytes.txt”数据输入文件可在此处查看:https://drive.google.com/file/d/18pqILl9myeTRjdiqtExFyOe94Km_aNNM/view?usp=sharing]1


你已经搞砸了 - 你应该避免将二进制数据保存为文本文件!

将文件的内容复制到剪贴板 - 在 Mac 上,命令是:

cat frame.txt | pbcopy

启动Python并创建一个名为s并将其设置为剪贴板的内容:

s = PASTE_YOUR_CLIPBOARD

Now do:

from PIL import Image
from io import BytesIO

# Load image from BytesIO
im = Image.open(BytesIO(s))

# Display image and save image
im.show()
im.save('result.png')

如果你在OpenCV, use:

import cv2

# Make s as above
s = PASTE_YOUR_CLIPBOARD

i = np.frombuffer(s,dtype=np.uint8)

im = cv2.imdecode(i,cv2.IMREAD_UNCHANGED)

cv2.imwrite('result.png',im)

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将图像字节数据流解码为 JPEG 的相关文章

随机推荐

  • Azure 发布管道,失败阶段后继续

    我有以下天蓝色发布管道 问题是 有时我需要离开左阶段才能失败 但同时 即使失败 右阶段仍然应该执行 这可能吗 我发现的唯一的事情是 即使所选阶段部分成功也会触发 但如果前一阶段失败 它就不起作用 有时我需要离开左阶段才能失败 但同时 即使失
  • 下载html源android?

    我正在尝试下载网站源代码并将其显示在文本框中 但我似乎收到错误并且无法弄清楚 s public void getHtml throws ClientProtocolException IOException HttpClient httpC
  • 单击开始按钮时的 JavaScript 倒计时器,显示小时、分钟和秒

    我想在单击按钮时创建小时 分钟和秒的倒计时器 这是我到目前为止的代码 HTMLcode div class colomn style margin right 20px div
  • 是否可以制作一个调用 jdbc 的 Java JNI?

    我是 jni 的新手 并且非常困惑是否可以使用 jni 来实现我需要完成的任务 我想制作一个java api 它将使用jdbc来更新数据库 但是这个特定的api将从C 程序中调用 所以我想我可能应该编写通过 jdbc 访问数据库的 jni
  • libgdx 在受伤时改变精灵颜色

    我正在使用 libgdx 制作一个小平台游戏 我想让敌人在玩家用武器伤害他们时以红色闪烁 我已经尝试更改精灵颜色和精灵批次颜色但没有成功 它仅将新颜色与纹理之一融为一体 sprite setColor Color RED spriteBat
  • React PDF + Vite 实现错误:Uncaught SyntaxError

    我正在尝试在使用 Vite 创建的 React 项目中使用 React PDF 库 我在渲染 PDF 组件时遇到问题 并且错误非常奇怪 有人可以帮助我吗 Error Uncaught SyntaxError The requested mo
  • 如何使用 Kotlin 协程最大限度地减少 Web 服务调用次数?

    在我的 Android Kotlin 项目中 我在协程中调用 Web 服务 myWebservice只是一个管理 Web 服务调用的自定义类 fun searchForItems userInput String CoroutineScop
  • 如何在react js中将类型数据缓冲区转换为图像

    您好 我接下来有图像类型缓冲区 该数据是一张图像 如何将缓冲区数据转换为图像 当我向 api 发出请求时 它会显示以下数据 任何建议 后端是用node js续集MYSQL制作的 以及 React js 中的前端 我有下一个例子 https
  • 如何调试 w3wp clr.dll 错误

    我的客户在两台生产服务器上安装了 ASP NET 应用程序 与 NLB 平衡 但这无关紧要 两台服务器每 3 4 小时就会崩溃一次 并出现以下事件查看器记录的错误 错误应用程序名称 w3wp exe 版本 7 5 7601 17514 时间
  • C++11:memory_order_relaxed 和 memory_order_consume 之间的区别

    我现在正在学习C 11内存顺序模型并想了解之间的区别memory order relaxed and memory order consume 具体来说 我正在寻找一个无法替代的简单示例memory order consume with m
  • 如何在Python3中像printf一样打印?

    在 Python 2 中我使用 print a d b d f x n g x n 我试过了 print a d b d f x n g x n 在Python2中 print是一个引入语句的关键字 print Hi 在Python3中 p
  • Android中如何同步两个scrollview?

    我有两个水平的scrollview 并希望将它们始终保持在相同的位置 距离 如果用户滚动其中一个 则需要以编程方式滚动另一个 挑战在于 将会发生无限循环 一个将提出另一个 另一个将首先提出 如何设置状态 指示用户启动的滚动仍在进行中 那么其
  • 错误:HHH000299:无法完成架构更新 java.lang.NullPointerException

    我在以下环境中有一个网络应用程序 JPA 2 0 春季3 2 2 MySQL 5 6 11 休眠 4 2 0 CR1 阿帕奇汤姆猫 7 0 35 到目前为止我的配置application context xml文件如下
  • 如何从 github 存储库安装打字稿定义

    如何为像 aurelia validatejs 这样的库安装 typescript defs 就像我所做的那样npm install aurelia validatejs save将其添加到package json and node mod
  • NHibernate - 映射字符串外键

    我继承的旧数据库包含以下表格 Teams TeamId INT PRIMARY KEY Name VARCHAR 30 Players PlayerId INT PRIMARY KEY Team VARCHAR 30 Players 表中的
  • 为什么我的代码在c++中无限循环。我的代码需要反复提示用户

    我的代码需要反复提示用户输入整数 当用户不再想继续输入数字时 输出用户输入的所有正数之和 然后输出用户输入的所有负数之和 这是我到目前为止所拥有的 include
  • 允许将 T* 与 char* 别名。反过来也允许吗?

    Note 该问题已被重命名并减少 以使其更加集中和可读 大多数评论都是指旧文本 根据标准 不同类型的对象不能共享相同的内存位置 所以这是不合法的 std array
  • nhibernate 查询所有实现接口的对象

    例如 如果您有一个 Apple IWhatever 和一个 Orange IWhatever 并且您想找到它们 因为它们都是 IWhatever 那么您需要在 NHibernate 中做什么 它是否完全依赖于 HQL 和条件查询 还是您还必
  • 修改查询字符串而不重新加载页面

    我正在创建一个照片库 并且希望能够在浏览照片时更改查询字符串和标题 我正在寻找的行为经常出现在连续 无限页面的某些实现中 当您向下滚动查询字符串时 会不断增加页码 http x com page 4 等等 理论上这应该很简单 但我想要一些在
  • 将图像字节数据流解码为 JPEG

    我正在努力成功地将 JPEG 图像从字节解码回 JPEG 我从 MJPG 字节流的编码帧开始 我想对其进行解码以便使用 OpenCV 进行操作 我是 Python numpy opencv 等方面的新手 我现在将帧 JPG 数据放在文本文件