OpenCV buffer转cv::Mat

void convertBuf2Mat(void* input_ptr, vx_uint32 width, vx_uint32 height, cv::Mat& frame)

{

// 计算亮度通道和色度通道的大小

size_t y_size = width * height;

size_t uv_size = y_size / 2;

// 创建一个只包含亮度通道的 cv::Mat 对象

cv::Mat y_channel(height, width, CV_8UC1, (unsigned char*)input_ptr);

// 设置 U 通道和 V 通道的数据指针

unsigned char* u_ptr = (unsigned char*)input_ptr + y_size;

unsigned char* v_ptr = u_ptr + uv_size;

// 创建只包含 U 通道和 V 通道的 cv::Mat 对象

cv::Mat u_channel(height / 2, width / 2, CV_8UC1, u_ptr);

cv::Mat v_channel(height / 2, width / 2, CV_8UC1, v_ptr);

// 调整色度通道的大小以匹配亮度通道

cv::resize(u_channel, u_channel, cv::Size(width, height));

cv::resize(v_channel, v_channel, cv::Size(width, height));

// 合并亮度和色度通道,得到 NV12 格式的 cv::Mat

std::vector<cv::Mat> channels = { y_channel, u_channel, v_channel };

cv::merge(channels, frame);

}

相关推荐
苏宸啊2 分钟前
rbtree封装map和set
c++
AI枫林晚18 分钟前
源码解析Claude Code 项目 queryLoop 运行机制分析
人工智能·架构
AI攻城狮20 分钟前
OpenClaw Exec Approvals 机制:在安全与效率之间寻找平衡
人工智能·云原生·aigc
太难了啊21 分钟前
5分钟实现你的第一个 Node.js 智能体
人工智能·node.js
灵机一物22 分钟前
灵机一物AI智能电商小程序(已上线)-从需求到上线,2天用AI搞定电商签到、分享送积分功能
人工智能·ai编程·github copilot·claude code·电商开发·积分系统·全流程开发
Ferries24 分钟前
《从前端到 Agent》系列|02:应用层-提示词工程 (Prompt Engineering)
前端·人工智能·深度学习
太难了啊24 分钟前
智能体的两种灵魂:ReAct 与 Plan-and-Solve 深度对决
人工智能
时代中的一粒沙25 分钟前
从0实现一个Agent:100行代码理解AI智能体的核心循环
人工智能
汉克老师26 分钟前
GESP2025年6月认证C++三级( 第一部分选择题(1-8))
c++·二进制·原码·补码·gesp三级·gesp3级·八进制、
不想写代码的星星26 分钟前
C++ 折叠表达式:“我写递归你写折叠,咱俩代码差十年”
c++