NvDsOpticalFlowMeta

class pyds.NvDsOpticalFlowMeta

保存关于帧的光流元数据。

变量:
  • rowsint, 给定块大小的帧中存在的行数。例如,如果块大小为 4,帧高度为 720,则行数 = (720 / 4) = 180

  • colsint, 给定块大小的帧中存在的列数。例如,如果块大小为 4,帧宽度为 1280,则列数 = (1280 / 4) = 320

  • mv_sizeint, 运动向量的大小。参考 NvOFFlowVector

  • frame_numint, 源的当前帧号。

  • 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)