本文的主要知识点是有关python,阅读图片,显示图片和内容的知识. 如果您想对相关知识点进行系统且深入的研究python 读取照片,可以参考以下电子书
Python实现了两种读取和显示图片的方法
除了在Python中使用opencv外,您还可以使用两个库matplotlib和PIL来处理图片. 我更喜欢matpoltlib,因为它的语法更像是matlab.
一个,matplotlib
1. 显示图片
import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg # mpimg 用于读取图片
import numpy as np
lena = mpimg.imread(lena.png) # 读取和代码处于同一目录下的 lena.png
# 此时 lena 就已经是一个 np.array 了,可以对它进行任意处理
lena.shape #(512, 512, 3)
plt.imshow(lena) # 显示图片
plt.axis(off) # 不显示坐标轴
plt.show()
2. 显示频道
# 显示图片的第一个通道
lena_1 = lena[:,:,0]
plt.imshow(lena_1)
plt.show()
# 此时会发现显示的是热量图,不是我们预想的灰度图,可以添加 cmap 参数,有如下几种添加方法:
plt.imshow(lena_1, cmap=Greys_r)
plt.show()
img = plt.imshow(lena_1)
img.set_cmap(gray) # hot 是热量图
plt.show()
3. 将RGB转换为灰度
matplotlib中没有合适的功能将RGB图像转换为灰度图像. 您可以根据以下公式自定义一个:
def rgb2gray(rgb):
return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])
gray = rgb2gray(lena)
# 也可以用 plt.imshow(gray, cmap = plt.get_cmap(gray))
plt.imshow(gray, cmap=Greys_r)
plt.axis(off)
plt.show()
4. 缩放图像
这里将使用Scipy
from scipy import misc
lena_new_sz = misc.imresize(lena, 0.5) # 第二个参数如果是整数,则为百分比,如果是tuple,则为输出图像的尺寸
plt.imshow(lena_new_sz)
plt.axis(off)
plt.show()
5. 保存图片
5.1保存matplotlib绘制的图像
此方法适合保存由matplotlib绘制的任何图像,这些图像等效于屏幕捕获.
plt.imshow(lena_new_sz)
plt.axis(off)
plt.savefig(lena_new_sz.png)
5.2将数组另存为图像
from scipy import misc
misc.imsave(lena_new_sz.png, lena_new_sz)
5.3直接保存数组
读取后,仍然可以按照之前显示阵列的方法显示图像python 读取照片,这种方法完全不会造成图像质量的损失
np.save(lena_new_sz, lena_new_sz) # 会在保存的名字后面自动加上.npy
img = np.load(lena_new_sz.npy) # 读取前面保存的数组
第二,PIL
1. 显示图片
from PIL import Image
im = Image.open(lena.png)
im.show()
2. 将PIL图片图片转换为numpy数组
im_array = np.array(im)
# 也可以用 np.asarray(im) 区别是 np.array() 是深拷贝,np.asarray() 是浅拷贝
3. 保存PIL图片
直接调用Image类的save方法
from PIL import Image
I = Image.open(lena.png)
I.save(new_lena.png)
4. 将numpy数组转换为PIL图片
Matplotlib.image在这里用于读取图像数组. 请注意,此处读取的数组的类型为float32,范围为0-1,而PIL.Image的数据类型为uinit8,范围为0-255,因此需要进行转换. :
import matplotlib.image as mpimg
from PIL import Image
lena = mpimg.imread(lena.png) # 这里读入的数据是 float32 型的,范围是0-1
im = Image.fromarray(np.uinit8(lena*255))
im.show()
5. 将RGB转换为灰度图像
from PIL import Image
I = Image.open(lena.png)
I.show()
L = I.convert(L)
L.show()
使用opencv读取图片的python示例
安装环境后,我开始了第一个Hello单词示例,如何读取图片和保存图片
import cv2
import numpy as np
import matplotlib.pyplot as plt
#读取图片代码
img = cv2.imread(test.jpg,cv2.IMREAD_GRAYSCALE)
#IMREAD_COLOR = 1
#IMREAD_UNCHANGED = -1
#展示图片
cv2.imshow(image,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#使用matplotlib分析图片
#plt.imshow(img,cmap=gray,interpolation=bicubic)
#plt.plot([50,100],[80,100],c,linewidth=5)
#plt.show()
#把图片保存为png格式的灰色文件。
cv2.imwrite(testgray.png,img)
以上是这次与您共享的有关Java的所有知识点的摘要. 您还可以在下面的相关文章中找到相关文章,以进行进一步研究. 感谢您的阅读和支持.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-214982-1.html