OpenCV python邮票过滤器photoshop

OpenCV python邮票过滤器photoshop,python,opencv,image-processing,photoshop,Python,Opencv,Image Processing,Photoshop,我是opencv的新手。我有多张照片。下图左上角所示的示例图像之一。基本上我想分离背景和前景,这样边缘就清晰了,我可以正确地检测轮廓 我尝试了许多过滤器,当然还有使用各种参数的阈值 最后,当我在photoshop filters gallery上查看时,我注意到一个名为Stamp的过滤器,它给了我想要的结果(右上角)。它使边缘清晰,我想对柔和的角落使用一些模糊 我不知道如何使用python CV2获得与photoshop的邮票过滤器相同的操作 任何帮助或建议都将不胜感激 原始未接触图像 尝试

我是opencv的新手。我有多张照片。下图左上角所示的示例图像之一。基本上我想分离背景和前景,这样边缘就清晰了,我可以正确地检测轮廓

我尝试了许多过滤器,当然还有使用各种参数的阈值

最后,当我在photoshop filters gallery上查看时,我注意到一个名为Stamp的过滤器,它给了我想要的结果(右上角)。它使边缘清晰,我想对柔和的角落使用一些模糊

我不知道如何使用python CV2获得与photoshop的邮票过滤器相同的操作

任何帮助或建议都将不胜感激

原始未接触图像

尝试1:--代码

输出:


为高斯模糊和阈值过滤添加两个滑块可能会有所帮助,您可以获得相当不错的效果:

下面是我用来生成它的基本片段:

import numpy as np
import cv2
import cv2.cv as cv
from matplotlib import pyplot as plt

# slider callbacks
def printThreshold(x):
    print "threshold",x
def printGaussianBlur(x):
    print "gaussian blur kernel size",x
# make a window to add sliders/preview to
cv2.namedWindow('processed')
#make some sliders
cv2.createTrackbar('threshold','processed',60,255,printThreshold)
cv2.createTrackbar('gaussian blur','processed',3,10,printGaussianBlur)
# load image
img = cv2.imread('cQMgT.png',0)
# continously process for quick feedback
while 1:
    # exit on ESC key
    k = cv2.waitKey(1) & 0xFF
    if k == 27:
        break

    # Gaussian Blur ( x2 +1 = odd number for kernel size)
    kernelSize = ((cv2.getTrackbarPos('gaussian blur','processed') * 2) + 1)
    blur = cv2.GaussianBlur(img,(kernelSize,kernelSize),0)
    # Threshold
    ret,thresh = cv2.threshold(blur,cv2.getTrackbarPos('threshold','processed',),255,0)
    # show result
    cv2.imshow('processed ',thresh)

# exit
cv2.destroyAllWindows()

您可以随意在混合中添加其他过滤器,并尝试使用滑块。

这看起来像是二值化,可能是腐蚀和膨胀。显示原始未触及的图像,alsoHi@AnderBiguri刚刚添加了原始图像。@AnderBiguri。。有什么帮助吗?是的。。。我已经给你了。你试过了吗?嗨,安德比古里。是的,我试过了,但没有得到所需的输出。如果你想看,我可以附上图片。哦@GeorgeProfenza,你是新手。非常感谢您抽出时间来做这件事。Slider是个很酷的主意,我没想到。其主要思想是保持上下骨骼的分离。我一定会在你的代码上尝试一些实验,如果我得到结果,我会告诉你的。太好了!如果答案有帮助,请随意投票/打分;)享受探索过滤器的乐趣。期待看到什么起作用(可能希望进入组合(你已经有侵蚀/扩张,开放/关闭可能也有帮助)
import numpy as np
import cv2
import cv2.cv as cv
from matplotlib import pyplot as plt

# slider callbacks
def printThreshold(x):
    print "threshold",x
def printGaussianBlur(x):
    print "gaussian blur kernel size",x
# make a window to add sliders/preview to
cv2.namedWindow('processed')
#make some sliders
cv2.createTrackbar('threshold','processed',60,255,printThreshold)
cv2.createTrackbar('gaussian blur','processed',3,10,printGaussianBlur)
# load image
img = cv2.imread('cQMgT.png',0)
# continously process for quick feedback
while 1:
    # exit on ESC key
    k = cv2.waitKey(1) & 0xFF
    if k == 27:
        break

    # Gaussian Blur ( x2 +1 = odd number for kernel size)
    kernelSize = ((cv2.getTrackbarPos('gaussian blur','processed') * 2) + 1)
    blur = cv2.GaussianBlur(img,(kernelSize,kernelSize),0)
    # Threshold
    ret,thresh = cv2.threshold(blur,cv2.getTrackbarPos('threshold','processed',),255,0)
    # show result
    cv2.imshow('processed ',thresh)

# exit
cv2.destroyAllWindows()