簡體   English   中英

如何去除 opencv 中圖像的眩光?

[英]How to remove glare from images in opencv?

這個mathematica代碼從圖像中去除眩光:

img = Import["foo.png"]
Inpaint[img, Dilation[saturated, DiskMatrix[20]]]

如此處最受好評的答案所示:

https://dsp.stackexchange.com/questions/1215/how-to-remove-a-glare-clipped-brightness-from-an-image

我想使用 opencv 而不是 Mathematica 來獲得相同的結果。 我將如何在 opencv-python 中編寫等效代碼?

以下是如何在 Python/OpenCV 中執行此操作。

但我認為 OpenCV 修復例程不起作用,或者至少對於我的 Python 3.7.5 和 Z5BD4C87976F48E6A53919D53E14025E 不起作用。

輸入:

在此處輸入圖像描述

import cv2
import numpy as np

# read image
img = cv2.imread('apple.png')

# convert to gray
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# threshold grayscale image to extract glare
mask = cv2.threshold(gray, 220, 255, cv2.THRESH_BINARY)[1]

# Optionally add some morphology close and open, if desired
#kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (7,7))
#mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel, iterations=1)
#kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3,3))
#mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel, iterations=1)


# use mask with input to do inpainting
result = cv2.inpaint(img, mask, 21, cv2.INPAINT_TELEA) 

# write result to disk
cv2.imwrite("apple_mask.png", mask)
cv2.imwrite("apple_inpaint.png", result)

# display it
cv2.imshow("IMAGE", img)
cv2.imshow("GRAY", gray)
cv2.imshow("MASK", mask)
cv2.imshow("RESULT", result)
cv2.waitKey(0)


閾值圖像:

在此處輸入圖像描述

結果:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM