我希望我的形象像这样。
然而,我的照片是这样的,白点有时会出现在应该被“勾画”的区域。
基本上,我编写了图像侵蚀性的侵蚀版和扩展版扩容。如果您想看到这两个版本的代码,请让我知道,我会添加它。
我的目标是使被侵蚀的图像中的白色区域变成紫色,并将这些紫色侵蚀的字母/数字放在膨胀的字母/数字中。的函数只显示给定图像的指定R/G/B通道。
def outline():
red,green,blue = range(3)
imgD = dilation(chars,7,20,480)
imgE = erosion(chars,7,20,480)
imgDOr = imgD.copy()
imgDcop = onechannel(imgD,0)
imgDcop[:,:,0] = 128
imgEcop = onechannel(imgE,2)
imgEcop[:,:,2] = 128
for i in range (0,len(imgD)):
for j in range (0,len(imgD[0])):
if imgE[i,j,0] == 255:
imgDOr[i,j,0] = imgDcop[i,j,0]
imgDOr[i,j,1] = imgDcop[i,j,1]
imgDOr[i,j,2] = imgEcop[i,j,2]
imageshow(imgDOr)
print(outline())发布于 2018-12-14 16:36:16
这是erosion函数中的一个bug,它没有将白色像素设置为255,255,255。如果您查看发布的侵蚀图像的RGB,您将看到白色区域的第一个通道的值在250到255之间,灰色边缘是从239,239,239开始的。您需要修复erosion函数,严格地将所有空白区域设置为绝对255,255,255,或者将outline函数中的条件从if imgE[i,j,0] == 255:放宽到类似if 255 - imgE[i,j,0] <= 16:的内容。
https://stackoverflow.com/questions/53776209
复制相似问题