在cv2中,CLAHE代码
时间: 2024-03-10 17:48:18 浏览: 50
在OpenCV中,使用CLAHE算法对图像进行直方图均衡化的代码如下:
```python
import cv2
# 读入图像
img = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE)
# 创建CLAHE对象并设置参数
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
# 对图像进行直方图均衡化
img_clahe = clahe.apply(img)
# 显示结果
cv2.imshow('input', img)
cv2.imshow('output', img_clahe)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`cv2.imread()`用于读入图像,`cv2.createCLAHE()`用于创建CLAHE对象并设置参数,`clahe.apply()`用于对图像进行直方图均衡化。最后,使用`cv2.imshow()`来显示原始图像和均衡化后的图像,`cv2.waitKey()`用于等待用户按下键盘,`cv2.destroyAllWindows()`用于关闭所有窗口。
你可以根据需要修改参数,例如`clipLimit`用于限制对比度增强的程度,`tileGridSize`用于设置像素块的大小。
相关问题
cv::CLAHE 范例代码
`cv::CLAHE`是OpenCV中的局部对比度增强(Contrast Limited Adaptive Histogram Equalization)算法的缩写,用于增强图像的局部对比度,特别适用于处理光照不均的情况。以下是一个基本的Python示例代码:
```python
import cv2
import numpy as np
def apply_CLAHE(image_path, clipLimit=4.0, tileGridSize=(8, 8)):
# 读取输入图像
img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
if img is None:
print("Failed to load image.")
return
# 创建CLAHE对象
clahe = cv2.createCLAHE(clipLimit=clipLimit, tileGridSize=tileGridSize)
# 应用CLAHE增强
enhanced_img = clahe.apply(img)
return enhanced_img
# 使用示例
input_image = 'path_to_your_image.jpg'
enhanced = apply_CLAHE(input_image)
cv2.imshow('Original vs Enhanced', np.hstack([img, enhanced]))
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,`clipLimit`参数控制了对比度的限制范围,`tileGridSize`参数决定了增强区域的大小。`apply()`函数会应用CLAHE算法,并返回增强后的图像。
C++ cv::CLAHE 范例代码
在C++中,`cv::CLAHE` (Contrast Limited Adaptive Histogram Equalization) 是OpenCV库中的一个工具,用于图像局部直方图均衡化,增强对比度,特别是对于那些光照变化大的区域。以下是一个简单的例子,展示了如何在OpenCV中使用`cv::createCLAHE()`函数创建一个`CLAHE`对象,并应用到图像上:
```cpp
#include <opencv2/opencv.hpp>
int main() {
// 加载图片
cv::Mat img = cv::imread("path_to_your_image.jpg", cv::IMREAD_GRAYSCALE); // 确保是灰度图像
if (img.empty()) {
std::cout << "Could not open or find the image." << std::endl;
return -1;
}
// 创建CLAHE对象,指定大小(块大小)和亮度限制
int claheSize = 8; // 可调整大小
double clipLimit = 0.05; // 亮度限制
cv::Ptr<cv::CLAHE> clahe = cv::createCLAHE(claheSize, cv::Point(0, 0));
// 对图像进行CLAHE处理
cv::Mat clampedImg;
clahe->apply(img, clampedImg);
// 显示原图和处理后的图
cv::imshow("Original Image", img);
cv::imshow("CLAHE Enhanced Image", clampedImg);
// 等待按键并关闭窗口
cv::waitKey(0);
cv::destroyAllWindows();
return 0;
}
```
在这个示例中,`cv::createCLAHE`需要传入一个块大小和一个中心点,表示每个块的区域。`apply`函数则对整个图像进行处理。
阅读全文