OpenCV CUDA模块直方图计算------生成一组均匀分布的灰度级函数evenLevels()

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

该函数主要用于为 直方图均衡化、CLAHE 等图像处理算法 生成一组等间距的灰度区间边界值(bins 或 levels),这些边界值可用于后续将图像划分为多个区域进行处理。

函数原型

void cv::cuda::evenLevels 	
(
 	OutputArray  	levels,
	int  	nLevels,
	int  	lowerLevel,
	int  	upperLevel,
	Stream &  	stream = Stream::Null() 
) 		

参数

  • levels 目标数组。levels 具有 1 行、nLevels 列,类型为 CV_32SC1(即单通道 32 位有符号整型)。
  • nLevels 计算出的灰度级数量。nLevels 必须至少为 2。
  • lowerLevel 最低灰度级的下边界值(起始值)。
  • upperLevel 最高灰度级的上边界值(结束值)。
  • stream 用于异步执行的流(Stream),可实现与主机的异步操作。

代码示例

#include 
#include 

int main()
{
    cv::Mat levels;
    int nLevels = 8;
    int lower   = 0;
    int upper   = 255;

    // 在 GPU 上生成均匀分布的灰度级
    cv::cuda::evenLevels( levels, nLevels, lower, upper );

    // 打印结果
    std::cout << "生成的灰度级边界值: " << std::endl;
    for ( int i = 0; i < levels.rows * levels.cols; ++i )
    {
        std::cout << levels.at< int >( i ) << " ";
    }
    std::cout << std::endl;

    return 0;
}

运行结果

生成的灰度级边界值: 
0 37 74 111 147 183 219 255 

你可能感兴趣的:(OpenCV,opencv,人工智能,计算机视觉)