擅长:python、mysql、java
<p>这是一个带有<a href="http://luispedro.org/software/mahotas" rel="noreferrer" title="mahotas homepage">mahotas</a>的实现</p>
<pre><code>from pylab import imshow
import numpy as np
import mahotas
wally = mahotas.imread('DepartmentStore.jpg')
wfloat = wally.astype(float)
r,g,b = wfloat.transpose((2,0,1))
</code></pre>
<p>分成红、绿、蓝三个频道。下面最好使用浮点运算,所以我们在上面转换。</p>
<pre><code>w = wfloat.mean(2)
</code></pre>
<p><code>w</code>是白色通道。</p>
<pre><code>pattern = np.ones((24,16), float)
for i in xrange(2):
pattern[i::4] = -1
</code></pre>
<p>在垂直轴上建立+1、+1、-1、-1的图案。这是沃利的衬衫。</p>
<pre><code>v = mahotas.convolve(r-w, pattern)
</code></pre>
<p>用红色减白色卷积。这会给衬衫所在的地方一个强烈的反应。</p>
<pre><code>mask = (v == v.max())
mask = mahotas.dilate(mask, np.ones((48,24)))
</code></pre>
<p>寻找最大值并将其放大以使其可见。现在,我们调低整个图像,除了区域或兴趣:</p>
<pre><code>wally -= .8*wally * ~mask[:,:,None]
imshow(wally)
</code></pre>
<p>我们得到<img src="https://i.stack.imgur.com/5O2sQ.png" alt="waldo"/>!</p>