- 操作系統:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 編程語言:C++11
算法描述
將圖像從 RGB 色彩空間轉換為 YUV 色彩空間。
該函數將輸入圖像從 RGB 色彩空間轉換為 YUV。R、G 和 B 通道值的常規范圍是 0 到 255。
在進行線性變換時,范圍并不重要。但在進行非線性變換時,輸入的 RGB 圖像應歸一化到適當的值范圍以獲得正確的結果,就像在這里的 RGB → Yuv* 變換中一樣。輸出圖像必須是 8 位無符號三通道圖像 CV_8UC3。
注意:
函數的文字 ID 是 “org.opencv.imgproc.colorconvert.rgb2yuv”
函數原型
GMat cv::gapi::RGB2YUV
(const GMat & src
)
參數
- 參數 src: 輸入圖像,8 位無符號三通道圖像 CV_8UC3。
代碼示例
#include <opencv2/gapi.hpp>
#include <opencv2/gapi/core.hpp> // 包含核心功能
#include <opencv2/gapi/imgproc.hpp> // 包含圖像處理功能
#include <opencv2/opencv.hpp>int main()
{// 讀取一個BGR圖像cv::Mat bgr_img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png" );if ( bgr_img.empty() ){std::cerr << "Error: Image not found!" << std::endl;return -1;}// 定義G-API圖cv::GMat src;auto yuv = cv::gapi::RGB2YUV( src ); // 盡管名為RGB2YUV,實際上處理的是BGR輸入cv::GComputation comp( cv::GIn( src ), cv::GOut( yuv ) );// 創建輸出矩陣cv::Mat out_yuv;// 應用計算圖并執行轉換,指定使用默認的CPU后端comp.apply( cv::gin( bgr_img ), cv::gout( out_yuv ), cv::compile_args( cv::gapi::kernels() ) );// 顯示原始圖像cv::imshow( "Original BGR Image", bgr_img );// 將YUV圖像拆分為單獨的通道以便于顯示std::vector< cv::Mat > yuv_channels;cv::split( out_yuv, yuv_channels );// 顯示YUV圖像的不同通道(注意:這些顯示可能需要調整以更好地可視化)cv::imshow( "Y Channel", yuv_channels[ 0 ] );cv::imshow( "U Channel", yuv_channels[ 1 ] );cv::imshow( "V Channel", yuv_channels[ 2 ] );cv::waitKey( 0 );return 0;
}