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

}

相关推荐
程序员老舅1 分钟前
C++高并发精髓:无锁队列深度解析
linux·c++·内存管理·c/c++·原子操作·无锁队列
aircrushin6 分钟前
中国多模态大模型历史性突破:智源Emu3自回归统一范式技术深度解读
人工智能
Lsx_14 分钟前
前端视角下认识 AI Agent 和 LangChain
前端·人工智能·agent
划破黑暗的第一缕曙光14 分钟前
[C++]:2.类和对象(上)
c++·类和对象
aiguangyuan15 分钟前
使用LSTM进行情感分类:原理与实现剖析
人工智能·python·nlp
Yeats_Liao22 分钟前
评估体系构建:基于自动化指标与人工打分的双重验证
运维·人工智能·深度学习·算法·机器学习·自动化
墨雪不会编程23 分钟前
C++之【深入理解Vector】三部曲最终章
开发语言·c++
cpp_250126 分钟前
P9586 「MXOI Round 2」游戏
数据结构·c++·算法·题解·洛谷
深圳市恒星物联科技有限公司27 分钟前
水质流量监测仪:复合指标监测的管网智能感知设备
大数据·网络·人工智能
kyle~32 分钟前
ROS2---QoS策略
c++·机器人·ros2