OpenCV: как добавить искусственные эффекты размытия / размытия движения к целому изображению?
1 ответ
Чтобы достичь этого эффекта, вы сворачиваете изображение с ядром, подобным линейному сегменту (или PSF, функцией распределения точек), например так:
img = cv2.imread("Lenna.png")
psf = np.zeros((50, 50, 3))
psf = cv2.ellipse(psf,
(25, 25), # center
(22, 0), # axes -- 22 for blur length, 0 for thin PSF
15, # angle of motion in degrees
0, 360, # ful ellipse, not an arc
(1, 1, 1), # white color
thickness=-1) # filled
psf /= psf[:,:,0].sum() # normalize by sum of one channel
# since channels are processed independently
imfilt = cv2.filter2D(img, -1, psf)
Чтобы быть более реалистичным, вам нужно выполнить размытие в линейной области (т.е. инвертировать, а затем повторно применить гамму sRGB, см. здесь , это целая еще одна банка червей), но этот простой код дает вам следующее:
Источник:
Результат: