【发布时间】:2017-05-07 05:11:30
【问题描述】:
我是opencv的新手。我有多个图像。如下左上角所示的示例图像之一。基本上我想分离背景和前景,以便边缘清晰,我可以正确检测轮廓。
我尝试了许多过滤器,当然还有使用各种参数的阈值。
最后,当我查看 Photoshop 滤镜库时,我注意到一个名为 Stamp 的滤镜,它给了我想要的结果(右上角)。它使边缘清晰,我想对柔和的角落使用一些模糊。
我不确定如何使用 python CV2 获得与 photoshop 的邮票过滤器相同的操作?
任何帮助或建议将不胜感激。
未修改的原始图像
尝试1:--代码
import cv2
import numpy as np
from matplotlib import pyplot as plt
input_img = cv2.imread('images/Tas/t3.bmp')
desired_img = cv2.imread('images/stamp.jpg')
# gray scale
gray = cv2.cvtColor(input_img, cv2.COLOR_BGR2GRAY)
kernel = np.ones((3,3),np.uint8)
thresh1 = cv2.threshold(input_img,80,255,cv2.THRESH_BINARY)[1]
erosion1 = cv2.erode(thresh1,kernel,iterations = 1)
dilation1 = cv2.dilate(erosion1,kernel,iterations = 1)
thresh2 = cv2.threshold(input_img,120,255,cv2.THRESH_BINARY)[1]
erosion2 = cv2.erode(thresh2,kernel,iterations = 1)
dilation2 = cv2.dilate(erosion2,kernel,iterations = 1)
titles = ['Original', 'Desired','thresh1', 'erosion1','dilation1','thresh2','erosion2','dilation2']
images = [input_img, desired_img, thresh1, erosion1,dilation1, thresh2,erosion2, dilation2]
for i in xrange(8):
plt.subplot(2,4,i+1),plt.imshow(images[i])
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show()
输出:
【问题讨论】:
-
它看起来像二值化,可能是腐蚀和膨胀。还显示未修改的原始图像
-
嗨 @AnderBiguri 刚刚添加了原始图像。
-
@AnderBiguri .. 有什么帮助吗?
-
是的...我已经给了你。你试过了吗?
-
嗨@AnderBiguri。是的,我试过但没有得到所需的输出。如果你想看,我可以附上图片。
标签: python opencv image-processing photoshop