python-将图像转换为二进制流
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-将图像转换为二进制流,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2258字,纯文字阅读大概需要4分钟。
内容图文
![python-将图像转换为二进制流](/upload/InfoBanner/zyjiaocheng/695/d7f1d1e2bf0c4069ac9dab425925936b.jpg)
我的应用程序有两个方面,一方面,我使用C语言,以便使用Pleora的EBUS SDK从相机读取帧.第一次接收到此流时,在将缓冲区转换为图像之前,我能够一次读取16位流,以便对每个像素执行一些计算,即每个像素存在16位数据块.
现在下半部分是Django网络应用程序,这次我也通过ffmpeg,nginx,hls流向您展示了此视频输出.当用户点击视频时,我希望能够获取当前帧及其点击坐标,并执行与我在C部分中相同的计算.
现在,我使用html5画布捕获框架,并使用canvas.toDataURL()将该框架转换为base64编码的图像,然后将base64图像,坐标和框架尺寸通过传递给python AJAX.
在python中,我试图以某种方式操纵此base64编码的图像,以使每个像素获得16位.目前,我执行以下操作:
pos = json.loads(request.GET['pos'])
str_frame = json.loads(request.GET['frame'])
dimensions = json.loads(request.GET['dimensions'])
pixel_index = (dimensions['width'] * pos['y']) + pos['x'] + 1
b64decoded_frame = base64.b64decode(str_frame.encode('utf-8'))
但是,b64decoded_frame中的索引要少得多,而图像中只有像素,并且整数值不如预期的那么高.我已经检查过了,图片仍然完整无缺,因为我能够将其另存为png.
总而言之,我如何将base64图像转换为序列化的二进制流,其中每个像素都由16位表示.
UPDATE
我忘了提到我正在使用python3.2
经过更多研究后,我认为我要尝试执行的操作将获得给定像素的mono16值.我不确定这是否是我想要做的,但是如果有人可以解释如何将图像转换为mono16或将像素转换为mono16,我可以探索一下,看看它是否实际上是解决方案.
解决方法:
我选择的解决方案是将图像转换为8位灰度图像,然后将所需像素转换为16位对应像素.该解决方案如下所示:
import base64
import io
from PIL import Image
if request.method == 'GET':
if request.GET['pos'] and request.GET['frame']:
pos = json.loads(request.GET['pos'])
str_frame = json.loads(request.GET['frame'])
# Converts the base64 string into a byte string, we need to encode
# str_frame as utf-8 first otherwise python3.2 complains about unicode
b64decoded_frame = base64.b64decode(str_frame.encode('utf-8'))
# This puts the decoded image into a buffer so that I don't need to save
# it to disk to use it in PIL
byte_stream = io.BytesIO(b64decoded_frame)
# Open the image and convert it to 8-bit greyscale (mono8)
img = Image.open(byte_stream).convert('L')
# Get the 8-bit pixel value
pixel_val = img.getpixel((pos['x'], pos['y']))
# Convert the 8-bit pixel value to 16-bit by holding the rations
# i.e. n8 / (2^8 - 1) == x16 / (2^16 - 1)
pixel_val = int(pixel_val / 255 * 65535)
内容总结
以上是互联网集市为您收集整理的python-将图像转换为二进制流全部内容,希望文章能够帮你解决python-将图像转换为二进制流所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。