OpenCV 图形API(52)颜色空间转换-----将 NV12 格式的图像数据转换为 RGB 格式的图像
- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
算法描述
将图像从 NV12 (YUV420p) 色彩空间转换为 RGB。该函数将输入图像从 NV12 色彩空间转换到 RGB。Y、U 和 V 通道值的常规范围是 0 到 255。
输出图像必须是 8 位无符号三通道图像 CV_8UC3。
注意:
函数的文字 ID 是 “org.opencv.imgproc.colorconvert.nv12torgb”
函数原型
GMat cv::gapi::NV12toRGB
(const GMat & src_y,const GMat & src_uv
)
参数
- 参数 src_y:输入图像,8 位无符号单通道图像 CV_8UC1。
- 参数 src_uv:输入图像,8 位无符号双通道图像 CV_8UC2。
代码示例
#include <opencv2/gapi.hpp>
#include <opencv2/gapi/core.hpp>
#include <opencv2/gapi/imgproc.hpp>
#include <opencv2/opencv.hpp>int main()
{// 假设我们有一个宽度为640像素,高度为480像素的图像int width = 640;int height = 480;// 创建Y和UV平面的Mat对象cv::Mat yPlane( height, width, CV_8UC1 ); // Y 平面cv::Mat uvPlane( height / 2, width / 2, CV_8UC2 ); // UV 平面// 填充一些随机数据作为示例cv::randu( yPlane, cv::Scalar( 0 ), cv::Scalar( 255 ) );cv::randu( uvPlane, cv::Scalar( 0 ), cv::Scalar( 255 ) );// 定义G-API图cv::GMat src_y, src_uv;auto rgb = cv::gapi::NV12toRGB( src_y, src_uv );cv::GComputation comp( cv::GIn( src_y, src_uv ), cv::GOut( rgb ) );// 创建输出矩阵cv::Mat out_rgb;// 应用计算图并执行转换,指定使用默认的CPU后端comp.apply( cv::gin( yPlane, uvPlane ), cv::gout( out_rgb ), cv::compile_args( cv::gapi::kernels() ) );// 显示结果cv::imshow( "Converted RGB Image", out_rgb );cv::waitKey( 0 );return 0;
}