Python处理图像数据时通常需要对图像文件进行读取、保存等操作,因此将现有的方法归纳了一下。

1. PIL

依赖包:Pillow

安装:pip install Pillow

源码:

 1 import numpy as np
2 from PIL import Image
3 import matplotlib.pyplot as plt
4
5 image = Image.open("image.jpg")
6
7 image_resize = image.resize((128, 128))
8 image_array = np.array(image_resize)
9 image_output = Image.fromarray(image_array)
10 image_output.save("image_output.jpg")
11
12 plt.imshow(image_output)
13 plt.axis("off")
14 plt.show()

2. opencv

依赖包:opencv-python

安装:pip install opencv-python

源码:

 1 import cv2
2
3 image = cv2.imread("image.jpg")
4
5 image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
6 image_resize = cv2.resize(image, (128, 128))
7
8 cv2.imwrite("image_output.jpg", image_gray)
9 cv2.namedWindow("img_out")
10 cv2.imshow('img_out',image_gray)
11 cv2.waitKey(0)
12 cv2.destroyAllWindows()

3. imageio

依赖包:imageio

安装:pip install imageio

源码:

 1 from imageio import imread, imsave
2 from scipy import ndimage
3 import matplotlib.pyplot as plt
4
5 image = imread("image.jpg")
6
7 img_rote_20 = ndimage.rotate(image, 20)
8 imsave("image_out.jpg", img_rote_20)
9
10 plt.imshow(img_rote_20)
11 plt.axis("off")
12 plt.show()

4. skimage (recommend to use)

依赖包:scikit-image

安装:pip install scikit-image

源码:

1 from skimage import io
2 import matplotlib.pyplot as plt
3
4 image = io.imread("image.jpg")
5
6 io.imsave("image_output.jpg", image)
7
8 io.imshow(image)
9 plt.show()

5. matplotlib

依赖包:matplotlib

安装:pip install matplotlib

源码:

 1 import matplotlib.image as mpimg
2 import matplotlib.pyplot as plt
3
4 image = mpimg.imread("image.jpg")
5
6 mpimg.imsave("image_output.jpg", image)
7
8 plt.imshow(image)
9 plt.axis("off")
10 plt.show()

7. keras (machine learning or deep learning)

依赖包:keras

安装:pip install keras

源码:

1 from keras.preprocessing import image
2
3 img = image.load_img("image.jpg", target_size=(128, 128))
4
5 image_array = image.img_to_array(img)
6 image_output = image.array_to_img(img)
7
8 image_output.save("image_output.jpg")

上述七种方法均可以对图像文件进行读取保存处理,对日常cv预处理图像非常有帮助。

最新文章

  1. https采集12306(复制)
  2. iframe替代方案
  3. os.getcwd()
  4. 把json格式对象转成可提交字符串格式,会过滤掉函数 {a: {b: 3}, b: [1], c: "d"} -> a.b=3&b[0]=1&c=d
  5. 考虑virtual函数以外的其它选择
  6. WebConfig特殊字符的转义!
  7. Activity设置singleTask无法通过Intent获取值的问题
  8. google官方的下拉刷新+自定义上拉加载更多
  9. Django学习-5-模板渲染
  10. ES6你不知道的let关键字及变量的提升
  11. django模板(template)
  12. CF258D Little Elephant and Broken Sorting (带技巧的DP)
  13. [Functional Programming] Arrow contramap vs map and promap
  14. MyBatis 作用域和生命周期
  15. linux下安装java jdk
  16. windows系统查看端口占用程序方法
  17. Python -- 使用pickle 和 CPickle对数据对象进行归档和解析
  18. Kotlin Reference (二) Idioms
  19. MongoDb企业应用实战(一) 写在MongoDB应用介绍之前(ii)
  20. 将 xml 文件 转为 DataTable

热门文章

  1. 第一章 --------------------WPF基础概述
  2. Maven多模块管理
  3. IdentityServer4 - V4 概念理解及认证授权过程
  4. 基于Java的高并发多线程分片断点下载
  5. Spark详解(04) - Spark项目开发环境搭建
  6. CLISP学习(一)
  7. 8. 字符串转整数 (atoi)
  8. [cocos2d-x]捕鱼达人鱼和子弹的碰撞检测
  9. P1005 [NOIP2007 提高组] 矩阵取数游戏
  10. three.js实现分模块添加梦幻bloom辉光光晕方案--详细注释版本~~方案三版本~~