Как реализовать эффект OilPaint в стиле Photoshop в OpenCV? - PullRequest
0 голосов
/ 01 февраля 2020

Итак, самым близким из того, что я нашел, является эта реализация Mathematica . Тем не менее Mathematica не является открытым исходным кодом и не может быть легко включена в другие приложения ... Поэтому мне интересно, как сделать эффект Photoshop как эффект OilPaint в OpenCV?

Пример входных данных: enter image description here

Пример результата: enter image description here

Пример разницы (обратите внимание, что на разностном изображении невозможно реально обнаружить какие-либо шаблоны, не включенные в результат обработки): enter image description here

И лучше всего то, что обработанное изображение выглядит близко к тому, что эксперты видят в исходном изображении: enter image description here

Изображения источник .

Итак, как реализовать эффект Photoshop как эффект OilPaint в OpenCV (в Python или C ++)?

1 Ответ

2 голосов
/ 02 февраля 2020

Вот классическая c форма эффекта рисования маслом в Python / OpenCV. Просто примените некоторую морфологию, открытую к изображению, а затем немного осветлите более темные области, используя cv2.normalize.

Ввод:

enter image description here

import cv2
import numpy as np

# load image
img = cv2.imread("windmill.jpg")

# apply morphology open to smooth the outline
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (6,6))
morph = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

# brighten dark regions
result = cv2.normalize(morph,None,20,255,cv2.NORM_MINMAX)

# write result to disk
cv2.imwrite("windmill_oilpaint.jpg", result)

cv2.imshow("IMAGE", img)
cv2.imshow("OPEN", morph)
cv2.imshow("RESULT", result)
cv2.waitKey(0)
cv2.destroyAllWindows()


enter image description here

...