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 <opencv2/cudaimgproc.hpp>
#include <opencv2/opencv.hpp>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