沈阳做网站的公司有哪些,旅游网站系统wordpress,菜市场做建筑设计图库的网站设计,南充公司做网站在 H.264 视频编码中#xff0c;SEI#xff08;Supplemental Enhancement Information#xff09;消息用于传输额外的、非编码的数据#xff0c;例如目标检测的信息。SEI 数据可以嵌入到 H.264 流中#xff0c;以在解码过程中传递这些附加信息。
一、步骤 确定 SEI 类型SEISupplemental Enhancement Information消息用于传输额外的、非编码的数据例如目标检测的信息。SEI 数据可以嵌入到 H.264 流中以在解码过程中传递这些附加信息。
一、步骤 确定 SEI 类型定义用于传递目标检测信息的 SEI 类型。H.264 标准允许用户定义自定义 SEI 消息类型。你可以选择一个未被标准使用的 SEI 类型例如0x1F 是一个预留的 SEI 类型或自定义类型。 创建 SEI 消息 帧级 SEISEI 消息可以附加到视频帧中。需要在编码过程中生成 SEI 消息并将其插入到 NAL 单元中。SEI 结构SEI 消息通常包含一个类型字段和一个负载字段。你可以在负载字段中存储目标检测信息。 SEI 负载格式目标检测信息可能包括目标的位置、类型等。可以使用以下格式之一或设计自己的格式来表示这些信息 位置可以使用目标的边界框bounding box来表示如 (x, y, width, height)。类型用整数或字符串表示目标类型。 插入 SEI 消息将创建的 SEI 消息插入到 H.264 流中通常是在 IDR 帧之前。SEI 消息是通过特定的 NAL 单元类型插入的如 NAL_UNIT_SEI。
二、SEI 消息格式
假设 SEI 类型为 0x1F并且负载格式为
0x1FSEI 类型目标数量1 字节目标数据 目标类型1 字节位置4 字节x、y、width、height
三、代码
#include vector// 定义 SEI 消息类型
const uint8_t SEI_TYPE_OBJECT_DETECTION 0x1F;// 创建 SEI 消息
std::vectoruint8_t create_object_detection_sei(const std::vectorstd::tupleint, int, int, int, uint8_t detections) {std::vectoruint8_t sei_message;sei_message.push_back(SEI_TYPE_OBJECT_DETECTION); // SEI 类型// 目标数量sei_message.push_back(static_castuint8_t(detections.size()));// 目标数据for (const auto detection : detections) {auto [x, y, width, height, type] detection;sei_message.push_back(type); // 目标类型sei_message.push_back(static_castuint8_t(x)); // xsei_message.push_back(static_castuint8_t(y)); // ysei_message.push_back(static_castuint8_t(width)); // widthsei_message.push_back(static_castuint8_t(height)); // height}return sei_message;
}