- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
算法描述
cv::cuda::equalizeHist 用于增强图像的对比度,通过将图像的灰度直方图重新分布,使得图像整体对比度更加明显。
这在医学图像、夜视图像、低对比度图像中特别有用。
函数原型
void cv::cuda::equalizeHist
(
InputArray src,
OutputArray dst,
Stream & stream = Stream::Null()
)
参数
- src 源图像,类型为 CV_8UC1(即单通道、8位无符号整型图像)。
- dst 目标图像,与源图像具有相同的尺寸和类型。
- stream 用于异步执行的流(Stream),可实现与主机的异步操作。
代码示例
#include <iostream>
#include <opencv2/cudaimgproc.hpp> // 包含 equalizeHist 函数
#include <opencv2/opencv.hpp>
int main()
{
// 读取灰度图像
cv::Mat img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", cv::IMREAD_GRAYSCALE );
if ( img.empty() )
{
std::cerr << "无法加载图像" << std::endl;
return -1;
}
// 将图像上传到 GPU
cv::cuda::GpuMat d_img, d_result;
d_img.upload( img );
// 在 GPU 上执行直方图均衡化
cv::cuda::equalizeHist( d_img, d_result );
// 下载结果到 CPU
cv::Mat result;
d_result.download( result );
// 显示原始图像和处理后的图像
cv::imshow( "Original Image", img );
cv::imshow( "Equalized Image", result );
cv::waitKey( 0 );
return 0;
}