Пытаюсь удалить этот слабый водяной знак, но в итоге на дисплее matplotlib появляется синий оттенокPython

Программы на Python
Ответить
Anonymous
 Пытаюсь удалить этот слабый водяной знак, но в итоге на дисплее matplotlib появляется синий оттенок

Сообщение Anonymous »

Я работаю над проектом, который требует удаления водяных знаков определенного типа с фона определенных изображений (обычно связанных с STEM, поскольку это касается образовательного проекта). Для начала я попытался удалить водяной знак со следующего изображения:
это изображение, с которого я пытался его удалить
Изображение

Возможно, вам придется увеличить масштаб, чтобы увидеть это; но там написано, что цель экзамена
однако по какой-то причине результат, который я получил, хотя и был далек от идеала, был окрашен в синий цвет. я понятия не имею, почему это произошло, и работал над этим несколько часов; но не смог найти решение
Изображение

Я запустил следующий код в Google Colab; который вроде как (правда, очень плохо) избавился от водяного знака. для справки я использовал matplotlib, numpy, а также cv2.
Я был бы очень признателен за помощь в том, как это сделать, потому что я также пытаюсь обобщить этот процесс для нескольких фотографии.
import cv2
import numpy as np
import matplotlib.pyplot as plt
from google.colab import files

uploaded = files.upload()
for filename in uploaded.keys():
print(f'Uploaded file name: {filename}')
image_path = filename
image = cv2.imread(image_path)

if image is None:
print(f"Error: Unable to load image at {image_path}")
else:
print("Image loaded successfully")

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
enhanced = cv2.equalizeHist(gray)
adaptive_thresh = cv2.adaptiveThreshold(enhanced, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY_INV, 11, 2)
kernel = np.ones((3, 3), np.uint8)
morph = cv2.morphologyEx(adaptive_thresh, cv2.MORPH_CLOSE, kernel, iterations=2)
mask = cv2.bitwise_not(morph)
result = cv2.inpaint(image, mask, 3, cv2.INPAINT_TELEA)
plt.figure(figsize=(15, 15))
plt.subplot(1, 2, 1)
plt.title('Original Image')
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.subplot(1, 2, 2)
plt.title('Image without Watermark')
plt.imshow(cv2.cvtColor(result, cv2.COLOR_BGR2RGB))
plt.show()


Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-matplo
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»