包含轮廓的图像中出现白点

时间:2018-12-14 08:47:36

标签: python python-3.x numpy rgb

我希望我的图像看起来像这样。

No Spots Appearing in Purple Region

但是,我的图像看起来像这样,有时应该在“轮廓线”区域出现白色斑点。

Spots Appearing

基本上,我编码了图像Eroded的侵蚀版本以及膨胀版本Dilated。如果您想查看这两个版本的代码,请告诉我,我将其添加。

我的目标是使侵蚀图像中的白色区域变为紫色,并将这些紫色侵蚀的字母/数字放入膨胀的字母/数字的内部。 一个通道功能仅显示给定图像的指定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())

1 个答案:

答案 0 :(得分:0)

这是您的erosion函数中的一个错误,它没有将白色像素设置为255,255,255。如果检查发布的侵蚀图像的RGB,您将看到白色区域的第一个通道的值在250到255之间,灰色边缘从239,239,239开始。您需要修复erosion函数以将所有白色区域严格设置为绝对255,255,255,或者将outline函数中的条件从if imgE[i,j,0] == 255:放宽到{{1} }。