我需要使用OpenCV实现Photoshop中的高通滤波器。我已经阅读了关于OpenCV中高通滤波器的内容并尝试了一些卷积核,例如{{kernel}}。
输出结果是这个。现在更接近我想要的,但仍有差异。
我的代码:
Photoshop:
最后编辑。在调整高斯模糊核大小后,我终于用
[[ 0, -1, 0],
[-1, 4, -1],
[ 0, -1, 0]].
然而,我的结果并不是我想要的,因为输出图像大部分是黑白的,而在Photoshop中输出的图像是灰色的。以下是示例:OpenCV高通滤波和Photoshop高通滤波。此外,我尝试了以下方法:
blur = cv2.GaussianBlur(img,(ksize,ksize),0)
filtered = cv2.subtract(img,blur)
结果类似于OpenCV高通滤波。
之后,我尝试给输出图像的每个像素添加127。确实,图片现在看起来有点灰色, 但是仍然与Photoshop图像不同。
那么我错过了什么?提前致谢。
编辑。针对Håken Lid的代码如下:
import cv2
import numpy
img = cv2.imread('input.jpg')
blur = cv2.GaussianBlur(img,(31,31),0)
filtered = cv2.subtract(img, blur)
filtered = cv2.add(filtered, 127*numpy.ones(neg_frame.shape, numpy.uint8))
cv2.imwrite('output.jpg', filtered)
编辑2。是的,Håken Lid关于截断的想法是正确的。我又一次编辑了代码:
import cv2
import numpy
img = cv2.imread('input.jpg')
blur = cv2.GaussianBlur(img,(31,31),0)
filtered = img - blur
filtered = filtered + 127*numpy.ones(neg_frame.shape, numpy.uint8)
cv2.imwrite('output.jpg', filtered)
输出结果是这个。现在更接近我想要的,但仍有差异。
我的代码:
![my output](https://istack.dev59.com/dXQlQ.webp)
![photoshop output](https://istack.dev59.com/qCDxG.webp)
ksize = 51
得到了我想要的结果。非常感谢所有的帮助!现在我感觉有点傻 :P
constant * (img -blur) +127
。 您需要不断调整直到达到正确的效果。 - Cris Luengoneg_frame
жҳҜд»Җд№Ҳпјҹ - Vasyl Vaskivskyineg_frame
是什么,也不知道它的形状是什么。 - WASasquatch