use*_*342 6 python opencv numpy h.264 mat
在 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)
Run Code Online (Sandbox Code Playgroud)
尝试了不同的标志。但也惨败。
在许多其他失败的尝试之后,我用完了想法。
总结一下我需要做的事情:我在一个变量中有一个 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)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3512 次 |
| 最近记录: |