Opencv 去暗角范例代码
时间: 2024-09-29 13:00:38 浏览: 78
OpenCV是一个开源的计算机视觉库,它提供了许多图像处理功能,包括去暗角技术。以下是一个简单的Python示例,使用OpenCV的`cv2.addWeighted()`函数来减轻暗角的影响:
```python
import cv2
import numpy as np
def remove_dark_corner(image_path):
# 读取图片
img = cv2.imread(image_path)
# 定义暗角区域的大小和阈值
corner_radius = 50
threshold = 20
# 将图片转换为灰度
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 检测边缘并膨胀以确定暗角区域
edges = cv2.Canny(gray_img, threshold, threshold * 2)
kernel = np.ones((corner_radius*2+1, corner_radius*2+1), np.uint8)
dilated_edges = cv2.dilate(edges, kernel)
# 使用高斯模糊填充暗角区域
blurred_img = cv2.GaussianBlur(dilated_edges, (99, 99), 0)
mask = np.where(blurred_img > 0, 1, 0).astype(np.uint8) * 255
# 应用掩码去除暗角
result = cv2.bitwise_and(img, img, mask=mask)
return result
# 使用示例
input_image = 'path_to_your_image.jpg'
output = remove_dark_corner(input_image)
cv2.imwrite('output_without_darks.png', output)
```
这个例子中,我们首先检测边缘,然后用高斯滤波器模糊边缘区域,创建一个掩模,最后使用位运算将原始图像与掩模相乘,以保留非暗角部分。
阅读全文