图像处理基础
这是我们要处理的图片,不知道干嘛

应用matloitlib库:https://blog.csdn.net/JohinieLi/article/details/69389980

取第一层颜色

灰度图
1 import matplotlib.pyplot as plt #show 2 import matplotlib.image as mping #read 3 import numpy as np 4 def picsh(x): 5 fis=mping.imread(x) 6 print(fis.shape) 7 return fis 8 plt.figure(1) 9 10 plt.imshow(fis) 11 12 plt.axis('off') 13 plt.show() 14 15 pic='linelabel.jpg' 16 fis=picsh(pic) 17 18 gray=np.dot(fis[...,:3],[0.299,0.587,0.114]) 19 plt.imshow(gray,cmap='Greys_r') 20 plt.show()

tip:这里要注意生成的矩阵含义。[高,宽,RGB],设置的时候捣鼓了好久都没发现问题。。

傻瓜的我用的是循环,因为对点乘不熟:
for i in range(gray1.shape[0]): for j in range(gray1.shape[1]): gray1[i,j,0]=gray1[i,j,0]*0.3+gray1[i,j,1]*0.59+gray1[i,j,2]*0.11 gray1[i,j,1]=gray1[i,j,0] gray1[i,j,2]=gray1[i,j,0]
看有人用cmap实现灰度
def main(): pic='linelabel.jpg' fis=picsh(pic) gray=np.dot(fis[...,:3],[0.299,0.587,0.114]) mping.imsave('grallb.jpg',gray) # plt.imshow(gray) plt.imshow(gray,cmap='Greys_r') plt.show()
想减少for循环带来的延迟,认真研究数组,https://baijiahao.baidu.com/s?id=1638823188602684743&wfr=spider&for=pc,发现这个,没事看看
如果不行,就坐标转置,先放在这里,https://www.cnblogs.com/wildbloom/p/7928237.html
mat()和array()生成矩阵 的对比:
首先,mat() 函数与array()函数生成矩阵所需的数据格式有区别,mat()函数中数据可以为字符串以分号(;)分割或者为列表形式以逗号(,)分割,而array()函数中数据只能为后者形式。
经过我锲而不舍的探索,得到了这个。用矩阵乘法,速度提高了好几倍,性能不够,算法来凑,不容易啊。就是不明白为什么出现了反色。

对了,之前有过模糊的问题,是浮点数的原因,记录如下

正确的代码:
1 import matplotlib.pyplot as plt #show 2 import matplotlib.image as mping #read 3 import numpy as np 4 5 def main(): 6 pic='linelabel.jpg' 7 fis=mping.imread(pic) 8 gray1=fis 9 f=open("wrong_out.txt","w") 10 11 ggg=np.zeros([1920,1080,3]) 12 for i in range(gray1.shape[0]): 13 ggg[i]=np.dot(gray1[i],[[0.3],[0.59],[0.11]]) 14 #数值转换,浮点数变整型 15 ggg=ggg.astype(int) 16 print(ggg,file=f) 17 f.close() 18 mping.imsave('gre31.jpg',ggg) 19 plt.imshow(ggg) 20 plt.axis('off') 21 plt.show() 22 23 if __name__=='__main__': 24 main()
二值化
到了这一步我是真高兴。但是新问题来喽,因为电脑问题,我在避免for循环。。。。
np.mean(gray1),取数组平均值

参考文献
1.http://blog.sina.com.cn/s/blog_13c6397540102wqtt.html 灰度处理
2.https://blog.csdn.net/qq_33363973/article/details/79894982 numpy矩阵中的省略号
4.https://blog.csdn.net/lanchunhui/article/details/66972783 matploitlib可视化
5.https://www.cnblogs.com/wj-1314/p/10244807.html python 中numpy矩阵的用法
6.https://blog.csdn.net/u012149181/article/details/78913416 numpy.dot()的用法
7.https://www.cnblogs.com/shenxiaolin/p/11313101.html Python 将numpy array由浮点型转换为整型

浙公网安备 33010602011771号