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

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

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

该函数重要用于为 直方图均衡化、CLAHE 等图像处理算法 生成一组等间距的灰度区间边界值(bins 或 levels),这些边界值可用于后续将图像分别为多个区域进行处理。
函数原型
  1. void cv::cuda::evenLevels        
  2. (
  3.         OutputArray          levels,
  4.         int          nLevels,
  5.         int          lowerLevel,
  6.         int          upperLevel,
  7.         Stream &          stream = Stream::Null()
  8. )                
复制代码
参数


  • levels        目标数组。levels 具有 1 行、nLevels 列,类型为 CV_32SC1(即单通道 32 位有符号整型)。
  • nLevels        计算出的灰度级数量。nLevels 必须至少为 2。
  • lowerLevel        最低灰度级的下边界值(起始值)。
  • upperLevel        最高灰度级的上边界值(竣事值)。
  • stream        用于异步实行的流(Stream),可实现与主机的异步操作。
代码示例
  1. #include <opencv2/cudaimgproc.hpp>
  2. #include <opencv2/opencv.hpp>
  3. int main()
  4. {
  5.     cv::Mat levels;
  6.     int nLevels = 8;
  7.     int lower   = 0;
  8.     int upper   = 255;
  9.     // 在 GPU 上生成均匀分布的灰度级
  10.     cv::cuda::evenLevels( levels, nLevels, lower, upper );
  11.     // 打印结果
  12.     std::cout << "生成的灰度级边界值: " << std::endl;
  13.     for ( int i = 0; i < levels.rows * levels.cols; ++i )
  14.     {
  15.         std::cout << levels.at< int >( i ) << " ";
  16.     }
  17.     std::cout << std::endl;
  18.     return 0;
  19. }
复制代码
运行效果
  1. 生成的灰度级边界值:
  2. 0 37 74 111 147 183 219 255
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5

GMT+8, 2025-7-25 08:13 , Processed in 0.088464 second(s), 29 queries 手机版|qidao123.com技术社区-IT企服评测▪应用市场 ( 浙ICP备20004199 )|网站地图

快速回复 返回顶部 返回列表