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

}

相关推荐
光锥智能11 小时前
手机存量时代,vivo能用Harness让用户换机吗?
人工智能
AI Blog12 小时前
YOLO数据集 | 第05期:无人机检测、电力巡检、阀门识别
深度学习·目标检测·计算机视觉·yolo数据集
比奥利奥还傲.12 小时前
哪吒监控面板实战:部署 Dashboard、接入 Agent、钉钉告警,再配置固定公网访问
网络·人工智能·分布式·1024程序员节
云泽80812 小时前
从零搭建 WSL2 + Ubuntu C/C++ 开发环境:原理、实践与底层架构解析
linux·c++·windows·ubuntu·wsl2
FII工业富联科技服务13 小时前
从人机共舞到工业精密操作:机器人如何突破动作控制与场景适应?
人工智能·机器人·机器翻译模型
serdes2113 小时前
56G PAM4 SerDes RX 32 路时间交织 SAR ADC 顶层与采样前端
人工智能
Evand J18 小时前
【MATLAB例程|图像滤波降噪13】局部噪声方差自适应滤波(LNR)图像降噪与效果展示。附完整例程的下载链接
图像处理·计算机视觉·matlab·滤波·代码·降噪
初願致夕霞18 小时前
C++11:类型推导与完美转发复盘笔记
c++
小和尚同志18 小时前
小黑插图 Skill:从 11.7k star 的 Codex 专属,到 Claude Code 能用的平替
人工智能·aigc
高洁0118 小时前
孪生不止在工厂:能源、医疗与农业
人工智能·深度学习·transformer·知识图谱·tornado