- 操作系统: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;
}