在python中创建了一个rtsp客户端,它接收h264流并将单个h264原始帧作为二进制字符串返回。我正在尝试处理每个h264帧。opencv单个h264原始帧作为二进制字符串
我不成功地尝试了几种方法将此帧转换为numpy数组进行处理。
到目前为止,我知道cv2.VideoCapture只接受一个文件名作为它的参数,而不是一个帧既不是一个StringIO对象(像指向缓冲区的文件那样的文件),但我需要传递给它我的字符串。
我也曾尝试类似:
nparr = np.fromstring(frame_bin_str, np.uint8)
img_np = cv2.imdecode(nparr, cv2.CV_LOAD_IMAGE_COLOR)
试图diferent标志。但也失败了。
经过许多其他失败的尝试,我跑出了想法。
总结我需要做的事情:我在一个变量中有一个h264原始帧,我需要创建一个openvc有效的numpy数组,或者以某种方式结束包含该单帧的VideoCapture对象,这样我就可以处理框架。
任何指针将不胜感激。
希望这一切都有道理。
预先感谢您
afaik openCV不支持h264原始格式。在我们当前的项目中,有人编写了一些代码,逐帧读取这些文件(跳转到给定帧号的字节位置),并根据h264格式规则手动解释字节信息以获取openCV可用数据。 – Micka
谢谢你的回应Micka。如果我将这些帧转储到带有“\ x0 \ x00 \ x00 \ x001”分隔符的文件中。并从中创建一个VideoCapture对象。所有的作品都很完美。我可以逐帧阅读和检索并正确处理它们。所以我认为支持在那里。我不知道如何加载一个单一的框架,而不是一个文件。 – user3202342