- Определите область яркости вашего изображения. Мое решение состоит в том, что я посчитал каждый пиксель (значение канала> 100) в каждом столбце и определил ссылочный номер. Если число больше эталонного (я выбрал 55), я посчитал, что столбцы близки к яркому (255).
- После первого шага область яркости становится чистой, поэтому просто обрежьте эту область.
- Уменьшите яркость области. Полезная ссылка - здесь для уменьшения яркости.
- После уменьшения яркости просто замените ее исходной частью исходного изображения.
Вот решение для первый шаг и результат.
import cv2
img=cv2.imread("/ur/source/image/bright.png")
height, width, channels = img.shape
thresh = [100,100,100]
white = [255,255,255]
white_counter = 0
for x in range(0,width):
for y in range(0,height):
channels_xy = img[y,x]
if all(channels_xy >= thresh):
white_counter += 1
if(white_counter>55):
for k in range(0,height):
img[k,x] = white
white_counter = 0
cv2.imshow('Result',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Результат: