程序 # -*- coding: utf-8 -*- """ Created on Mon Aug 17 16:46:10 2015 @author: zhangbo """ from PIL import Image import numpy as np import matplotlib.pyplot as plt import time from functools import reduce i = Image.open('images/eight.png') iar = np.array(i) newIar = np.array(i) print(iar) iar.shape plt.imshow(iar) plt.show() def threshold(imageArray, alpha): """ 图像处理函数,将彩色图像处理为黑白图像, 原理是首先计算平均RGB颜色值,将其作为阈值, """ avgPixArray = [] newArray = imageArray for eachRow in imageArray: for eachPix in eachRow: avgNum = reduce(lambda x,y: x+y, eachPix[:3]) / len(eachPix[:3]) avgPixArray.append(avgNum) avgPix = reduce(lambda x, y: x+y, avgPixArray) / len(avgPixArray) avgPix = avgPix * alpha for eachRow in newArray: for eachPix in eachRow: if reduce(lambda x, y: x+y, eachPix[:3]) / len(eachPix[:3]) < avgPix: eachPix[0] = 255 eachPix[1] = 255 eachPix[2] = 255 eachPix[3] = 255 else: eachPix[0] = 0 eachPix[1] = 0 eachPix[2] = 0 eachPix[3] = 255 return newArray newIar = np.array(i) threshold(newIar, 0.1) plt.imshow(newIar) plt.imshow(iar) plt.imshow(newIar) plt.show() 参考文献:Image Recognition using Machine Learning Techniques