我的应用程序有两个方面,一方面,我使用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,我可以探索一下,看看它是否实际上是解决方案.