为了检验实验图像识别的效果,需要对加了噪声的图像进行识别。机器学习算法不能只是对清晰的图片有较好识别效果,对于不清晰的图像也应该较好地识别。
在图像的随机位置处把像素点的值设为某个值,如(25,20,20),如果像素点已经是灰度化了的,把值设为255,当像素点的数量较多时,便得到了有噪声的图像,如下面的程序设置了100000个点。
import cv2
import numpy as np
fn = "baboon.jpg"
if __name__ == '__main__':
print 'load %s ...' % fn
img = cv2.imread(fn)
coutn = 100000
for k in xrange(0,coutn):
#get the random point
xi = int(np.random.uniform(0,img.shape[1]))
xj = int(np.random.uniform(0,img.shape[0]))
#add noise
if img.ndim == 2:
img[xj,xi] = 255
elif img.ndim == 3:
img[xj,xi,0] = 25
img[xj,xi,1] = 20
img[xj,xi,2] = 20
cv2.namedWindow('img')
cv2.imshow('img',img)
cv2.waitKey()
cv2.destroyAllWindows()