第十章(上)----代码与错误分析

之前考试,实验室,久久没有写博客,就贴一下《机器学习系统设计》第十章的python代码。

一开始这语句:r,g,b=im.transpose(2, 0, 1)一直报错,我怎么搞都不行,就跑去Quora上问(再次隆重介绍Quora,好东西,大二就发现它的安卓App,拖到现在才发现它网站的牛X)知乎已经不能满足我了,所以还是得Quora.)
然后有人回复我,是说我给的信息太少,猜测是(2,0,1)应该写成((2,0,1))。试过也是不行,晚上吃完饭回来想要补充信息给他,想要上传我用的lenna.jpg的图给他试试效果,看看哪里错。
上传的时候猛然醒悟,是不是我的图有问题。果然,我的lenna.jpg是灰度图,当然没有rgb了。。。。换了一张彩色图,运行ok。另外,书中出现的C我全部用W替代,C本来就没有定义,可能是作者笔误。没有深究,从效果上看这样改是对的。


import mahotas as mh
import numpy as np
from matplotlib import pyplot as plt

'''
#用mh读入图片,image是一个三维的数组
image = mh.imread('test2.jpg')
image = mh.colors.rgb2gray(image)
plt.gray()
#thresh = mh.thresholding.rc(image)
#print(thresh)
#ostubin = (image > thresh)
#ostubin = mh.close(ostubin, np.ones((10, 10)))
im8 = mh.gaussian_filter(image, 28)
plt.imshow(im8)
plt.show()
'''

'''
#加入椒盐噪声
lenna = mh.imread('lenna.jpg', as_grey = True)
salt = np.random.random(lenna.shape) > 0.975
pepper = np.random.random(lenna.shape) >0.975
lenna = mh.stretch(lenna)
lenna = np.maximum(salt * 170, lenna)
lenna = np.minimum(pepper * 30 + lenna * (~pepper), lenna)
plt.imshow(lenna)
plt.gray()
plt.show()
'''


#聚焦中心
im = mh.imread('Tulips.jpg')
r,g,b=im.transpose(2, 0, 1)
r12 = mh.gaussian_filter(r, 12.)
g12 = mh.gaussian_filter(g, 12.)
b12 = mh.gaussian_filter(b, 12.)
im12 = mh.as_rgb(r12, g12, b12)
h, w = r.shape
Y, X = np.mgrid[:h, :w]
Y = Y - h/2.
Y = Y/ Y.max()
X = X - w/2.
X = X / X.max()
W = np.exp(-2. * (X ** 2 + Y ** 2))
W = W - W.min()
W = W / W.ptp()
W = W[:, :, None]
ringed = mh.stretch(im *W + (1 -W) * im12)
plt.imshow(ringed)
plt.show()





你可能感兴趣的:(机器视觉领域)