📜  使用 Mahotas 的 Wally 问题在哪里

📅  最后修改于: 2022-05-13 01:55:14.484000             🧑  作者: Mango

使用 Mahotas 的 Wally 问题在哪里

在本文中,我们将看到如何在给定图像中找到沃利。沃利在哪里? ,也称为沃尔多在哪里?在北美是一本英国的益智书籍。这些书由一系列详细的双页展开插图组成,展示了数十人或更多人在给定地点做各种有趣的事情。读者面临的挑战是要找到隐藏在小组中的名为 Wally 的字符。
程序中使用的图像 –

Wally 描述: Wally 的特征是他的红白条纹衬衫、泡泡帽和眼镜,但许多插图包含红鲱鱼,涉及欺骗性地使用红白条纹物体。
为此,我们将使用mahotas 库Mahotas是Python的计算机视觉和图像处理库。它包括许多用 C++ 实现的算法,以提高速度,同时在 numpy 数组中运行,并具有非常干净的Python接口。
安装mahotas的命令 -

pip install mahotas

下面是实现——

Python3
# importing required libraries
from pylab import imshow, show
import mahotas
import mahotas.demos
import numpy as np
 
# loading the image
wally = mahotas.demos.load('wally')
 
# showing the original image
imshow(wally)
show()
 
# getting float type value
# float values are better to use
wfloat = wally.astype(float)
 
# splitting image into red, green and blue channel
r, g, b = wfloat.transpose((2, 0, 1))
 
# white channel
w = wfloat.mean(2)
 
# pattern of wally shirt
# pattern + 1, +1, -1, -1 on vertical axis
pattern = np.ones((24, 16), float)
for i in range(2):
    pattern[i::4] = -1
 
# convolve with the red minus white
# increase the response where shirt is
v = mahotas.convolve(r-w, pattern)
 
# getting maximum value
mask = (v == v.max())
 
# creating mask to tone down the image
# except the region where wally is
mask = mahotas.dilate(mask, np.ones((48, 24)))
 
# subtraction mask from the wally
np.subtract(wally, .8 * wally * ~mask[:, :, None],
                   out = wally, casting ='unsafe')
 
# show the new image
imshow(wally)
show()


输出 :