NvDsOpticalFlowMeta¶
- class pyds.NvDsOpticalFlowMeta¶
保存关于帧的光流元数据。
- 变量:
rows – int, 给定块大小的帧中存在的行数。例如,如果块大小为 4,帧高度为 720,则行数 = (720 / 4) = 180
cols – int, 给定块大小的帧中存在的列数。例如,如果块大小为 4,帧宽度为 1280,则列数 = (1280 / 4) = 320
mv_size – int, 运动向量的大小。参考
NvOFFlowVector
。frame_num – int, 源的当前帧号。
data – 保存运动向量。
priv – 保留字段,仅供内部使用。
reserved – 保留字段,仅供内部使用。
用法示例
def visualize_optical_flowvectors(flow): """ Converts the flow u, v vectors into visualization by mapping them into grey color space :param flow: flow vectors :return: bgr image """ shape_visual = (flow.shape[0], flow.shape[1], 3) mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1]) hsv = np.full(shape_visual, 255, dtype=np.uint8) hsv[..., 1] = 255 hsv[..., 0] = ang * 180 / np.pi / 2 hsv[..., 2] = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR) bgr = 255 - bgr return bgr ... l_user = frame_meta.frame_user_meta_list #Retrieve glist containing NvDsUserMeta objects from given NvDsFrameMeta object while l_user is not None: try: # Casting l_user.data to pyds.NvDsUserMeta of_user_meta = pyds.NvDsUserMeta.cast(l_user.data) except StopIteration: break try: # Casting of_user_meta.user_meta_data to pyds.NvDsOpticalFlowMeta of_meta = pyds.NvDsOpticalFlowMeta.cast(of_user_meta.user_meta_data) # Get Flow vectors as np array flow_vectors = pyds.get_optical_flow_vectors(of_meta) # Reshape the obtained flow vectors into proper shape flow_vectors = flow_vectors.reshape(of_meta.rows, of_meta.cols, 2) # map the flow vectors in HSV color space for visualization flow_visual = visualize_optical_flowvectors(flow_vectors) got_visual = True except StopIteration: break try: l_user = l_user.next except StopIteration: break
- cast(self: capsule) pyds.NvDsOpticalFlowMeta ¶
转换为
NvDsOpticalFlowMeta
, 调用 pyds.NvDsOpticalFlowMeta(data)