OpenCV 图形API(41)颜色空间转换----- BGR 图像转换为灰度图像函数BGR2Gray()

发布于:2025-04-18 ⋅ 阅读:(22) ⋅ 点赞:(0)
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

将图像从BGR色彩空间转换为灰度。
B、G和R通道值的传统范围是0到255。结果的灰度颜色值计算为:
dst ( I ) = 0.114 ∗ src ( I ) . B + 0.587 ∗ src ( I ) . G + 0.299 ∗ src ( I ) . R \texttt{dst} (I)= \texttt{0.114} * \texttt{src}(I).B + \texttt{0.587} * \texttt{src}(I).G + \texttt{0.299} * \texttt{src}(I).R dst(I)=0.114src(I).B+0.587src(I).G+0.299src(I).R

cv::gapi::BGR2Gray 是 OpenCV 的 G-API 模块中的一个函数,用于将 BGR(蓝绿红)颜色空间的图像转换为灰度图像。G-API 是 OpenCV 中的一个模块,旨在通过定义图(graph)的方式来优化和加速计算机视觉操作。

当你调用 cv::gapi::BGR2Gray 函数时,你实际上是在告诉 G-API 你需要对输入的 BGR 图像进行灰度转换。

函数原型

GMat cv::gapi::BGR2Gray 	
(
 	const GMat &  	src
 ) 	

注意
函数的文字ID是 “org.opencv.imgproc.colorconvert.bgr2gray”

参数

  • 参数src 输入图像:8位无符号3通道图像 CV_8UC1。

代码示例

#include <opencv2/gapi.hpp>
#include <opencv2/gapi/core.hpp>
#include <opencv2/gapi/imgproc.hpp>
#include <opencv2/opencv.hpp>

int main()
{
    // 读取输入图像
    cv::Mat bgr_img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png" );
    if ( bgr_img.empty() )
    {
        std::cerr << "无法读取图像,请检查路径是否正确。\n";
        return -1;
    }

    // 定义G-API网络
    cv::GMat in;
    cv::GMat out = cv::gapi::BGR2Gray( in );

    // 创建并运行G-API图
    cv::GComputation comp( cv::GIn( in ), cv::GOut( out ) );
    cv::Mat gray_img;
    comp.apply( bgr_img, gray_img );

    // 显示结果
    cv::imshow( "Original BGR Image", bgr_img );
    cv::imshow( "Gray Image", gray_img );
    cv::waitKey( 0 );

    return 0;
}

运行结果

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到