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

}

相关推荐
懂AI的老郑3 分钟前
时空智能体技术研究与应用
人工智能
Wild API5 分钟前
多模型成本治理怎么落地?从任务分层、日志统计到结构优化的一套实战思路
大数据·网络·人工智能
样例过了就是过了5 分钟前
LeetCode热题100 杨辉三角
c++·算法·leetcode·动态规划
前端摸鱼匠9 分钟前
【AI大模型春招面试题22】层归一化(Layer Norm)与批归一化(Batch Norm)的区别?为何大模型更倾向于使用Layer Norm?
开发语言·人工智能·面试·求职招聘·batch
历程里程碑13 分钟前
MySQL视图:虚拟表的实战技巧
java·开发语言·数据库·c++·sql·mysql·adb
人工智能AI技术13 分钟前
索引基础:数据库索引结构与优化原则
人工智能
啊我不会诶15 分钟前
Educational Codeforces Round 120 (Rated for Div. 2) vp补题
c++·算法
永霖光电_UVLED16 分钟前
像“黏土”一样被光塑造的材料
大数据·人工智能·汽车·制造·娱乐
wechat_Neal17 分钟前
新能源整车配电方案解析
人工智能·汽车
埃伊蟹黄面19 分钟前
C++ —— 智能指针
开发语言·c++·算法