Я работаю над фильтром изображения, но для его правильной работы мне нужно выровнять молнию на изображении. Исходное изображение | Выходное изображение из-за проблем с освещением. | Вывод, когда молния одинакова по всему изображению. Я пробовал этот код:
import cv2
import numpy as np
img = cv2.imread('new_sample/sample6.jpg', 1)
original = img.copy()
lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
l, a, b = cv2.split(lab)
clahe = cv2.createCLAHE(clipLimit=4.0, tileGridSize=(8, 8))
cl = clahe.apply(l)
limg = cv2.merge((cl, a, b))
final = cv2.cvtColor(limg, cv2.COLOR_LAB2BGR)
kernel_sharpen_3 = np.array([[-1, -1, -1, -1, -1]
[-1, 2, 2, 2, -1],
[-1, 2, 8, 2, -1],
[-1, 2, 2, 2, -1],
[-1, -1, -1, -1, -1]]) / 8
img = cv2.filter2D(final, -1, kernel_sharpen_3)
ret, thresh1 = cv2.threshold(img, 110, 255, cv2.THRESH_BINARY)
threshold = cv2.fastNlMeansDenoising(thresh1, 11, 31, 9)
blur = cv2.GaussianBlur(threshold, (5, 5), 0)
stack_horizontal = np.concatenate((original, final), axis=1)
stack_horizontal2 = np.concatenate((threshold, blur), axis=1)
stack_vertical = np.concatenate((stack_horizontal, stack_horizontal2),
axis=0)
cv2.imshow('Images', cv2.resize(stack_vertical, (700, 1000)))
cv2.imwrite("magic.jpg", blur)
cv2.waitKey()
cv2.destroyAllWindows()