三.平均值法mean()函数
data_jpg=mpimg.imread("D:\CSDN图片\work.jpg") #最大值法; s=np.max(data_jpg,axis=-1) plt.imshow(s,cmap='gray')
效果展示;
和上面的方法所得出的效果基本相似。所以,掌握其中一种方法即可.
四.加权平均值法
和平均值法不一样的是,加权平均值法可以根据自己给的数据不同的灰度化;
data_jpg=mpimg.imread("D:\CSDN图片\work.jpg") weight=[0.01,0.01,0.01] #这里的值自己更改,值越大,灰度化颜色偏深,反之则偏浅. ss=np.dot(data_jpg,weight) plt.imshow(ss,cmap='gray')
图片的分割
有时候我我们只需要图片其中的一小部分,那我们就可以通过分割函数split()函数来实现;
one,data4,two=np.split(data_jpg,indices_or_sections=[100,400],axis=1) #中间的参数表示我们分割的区间; plt.imshow(data4) plt.imshow(one) plt.imshow(two)
效果展示;
总结
本节我要介绍的就这些了,对于图片的处理还有很多的方式,这里就先不过多的介绍,后面我会继续更新。利用代码实现图片的处理,会有很大的灵活使用空间,不局限于手机软件的限制,所以掌握这些方式也是有很大的益处.
源代码放在了下面,有兴趣的同学可以看一下.
源代码
import matplotlib.image as mpimg import math import numpy as np import matplotlib.pyplot as plt data=mpimg.imread("./onetemp.jpg") data1=data.copy() #打马赛克; #第一步,找出要打马赛克的位置; data2=data1[200:900,100:800] #第二步,将图片比例的收缩; data2=data2[::35,::35] print(data2.shape) datatemp=data1.copy() #第三步,替换,将现有的替换到原来的,记住两个尺寸不一样; for i in range(20): for j in range(20): datatemp[200+35*i:200+35*i+35,100+35*j:100+35*j+35]=data2[i,j] plt.imshow(datatemp) #图片的拼接; data4=np.concatenate([data,data])#axis=1时,并排着; plt.imshow(data4) data5=np.concatenate([data,data],axis=1) plt.imshow(data5) #图片切割; one,two,three=np.split(data,indices_or_sections=[400,600],axis=1) plt.imshow(one) plt.imshow(two) plt.imshow(three) #图像灰度化; #第一种方法,最小值法; data=mpimg.imread('./onetemp.jpg') #data=np.min(data,axis=-1) #plt.imshow(data,cmap='gray') #第二种方法,最小值法; data1=np.max(data,axis=-1) #plt.imshow(data1,cmap='gray') #第三种,平均值法; data3=np.mean(data,axis=-1)#等价于data.mean()函数; #plt.imshow(data3,cmap='gray') #第四种方法,加权平均值法,dot函数; weight=[0.299,0.345,0.456] data6=np.dot(data,weight) plt.imshow(data6,cmap='gray') data_jpg=mpimg.imread('D:\CSDN图片\work.jpg') print(data_jpg) #plt.imshow(data_jpg) #马赛克; data2=data_jpg.copy() data1=data_jpg[50:320,150:350] #plt.imshow(data1) data1=data1[::27,::40] #plt.imshow(data1) for i in range(10): for j in range(5): data2[50+27*i:50+27+27*i,150+40*j:150+40+40*j]=data1[i,j] plt.imshow(data2) #照片的合集; import matplotlib.image as mpimg import math import numpy as np import matplotlib.pyplot as plt data_jpg=mpimg.imread('D:\CSDN图片\work.jpg') data3=np.concatenate([data_jpg,data_jpg],axis=1) plt.imshow(data3) #图片的切割; one,data4,two=np.split(data_jpg,indices_or_sections=[100,400],axis=1) plt.imshow(data4) #plt.imshow(one) #plt.imshow(two) #图像的灰度化; data_jpg=mpimg.imread("D:\CSDN图片\work.jpg") #最大值法; s=np.max(data_jpg,axis=-1) plt.imshow(s,cmap='gray') #加权平均值法; data_jpg=mpimg.imread("D:\CSDN图片\work.jpg") weight=[0.31,0.41,0.53] ss=np.dot(data_jpg,weight) plt.imshow(ss,cmap='gray') #平均值法; smp=np.mean(data_jpg,axis=-1) plt.imshow(smp,cmap='gray') #最小值法; sss=np.min(data_jpg,axis=-1) plt.imshow(sss,cmap='gray')