繁体   English   中英

opencv单h264原始帧作为二进制字符串

[英]opencv single h264 raw frame as a binary string

在python中创建了一个rtsp客户端,它接收一个h264流并返回单个h264原始帧作为二进制字符串。 我正在尝试即时处理每个h264帧。

我没有尝试过几种方法将这个帧转换为numpy数组进行处理。

到目前为止,我知道cv2.VideoCapture只接受一个文件名作为参数,而不是一个帧既不是StringIO对象(文件像指向缓冲区的指针),但我需要传递给它我的字符串。

我也试过类似的东西:

nparr = np.fromstring(frame_bin_str, np.uint8)
img_np = cv2.imdecode(nparr, cv2.CV_LOAD_IMAGE_COLOR)

尝试过不同的旗帜。 但也悲惨地失败了。

经过许多其他失败的尝试后,我的想法就没了。

总结一下我需要做的事情:我在变量中有一个h264原始帧,我需要创建一个openvc有效numpy数组,或者以某种方式最终得到一个包含该单帧的VideoCapture对象,这样我就可以处理该帧了。

任何指针都将非常感激。

希望这一切都有意义。

先感谢您

正如Micka所说,OpenCV中不支持h264 RAW格式,我们应该自己转换它。

我认为你应该将nparr重新塑造成传入图像的形状。 没必要做imdecode。 使用imshow显示结果并验证。

这是我用来以类似方式转换16位RAW图像(灰度)的代码。 我在显示之前重新规范了我的图像。

framenp = np.fromstring(framestr, dtype=np.uint16).reshape((1024,1280))
#renormalizing to float
framenp = (framenp*1./framenp.max())
framenp.dtype = np.float
cv2.imshow('frame', cv2.resize(framenp, (640,480)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM