python进行图像处理中分别用到过matplotlib.pyplot、PIL、cv2三种库,这三种库图像读取和保存方法各异,并且图像读取时顺序也有差异,如plt.imread和PIL.Image.open读入的都是RGB顺序,而cv2.imread读入的是BGR顺序。使用时需要倍加注意。

现参考http://www.jianshu.com/p/3977d674da85。对这三种库图像读取保存进行梳理。与原参考资源有一定差异。当前使用为python3.5版本。

读取图像

1.matplotlib.pyplot

matplotlib读取进来的图片是unit8,0-255范围。

2.PIL.image.open

PIL是有自己的数据结构的,但是可以转换成numpy数组,转换后的数组为unit8,0-255

3.cv2.imread

opencv读进来的是numpy数组,类型是uint8,0-255。

4.plt.imread和PIL.Image.open读入的都是RGB顺序,而cv2.imread读入的是BGR顺序。使用时需要倍加注意。

显示图像

均用plt.imshow(img):因为opencv读取进来的是bgr顺序呢的,而imshow需要的是rgb顺序,因此需要先反过来plt.imshow(img[..., -1::-1])。

保存图像

1 PIL.image - 保存PIL格式的图片

img.save("1.jpg")

2.cv2.imwrite - 保存numpy格式的图片

cv2.imwrite("1.jpg")

OpenCV读取的图片从BGR转换为RGB

import cv2

img=cv2.imread(‘imagename’)

方法一

b,g,r=cv2.split(img)

img2=cv2.merge([r.g.b])

方法二

img2=img[: , : , : : -1]

- 显示
b,g,r = cv2.split(img)
img_rgb = cv2.merge([r,g,b])
plt.figure()
plt.imshow(img_rgb)
plt.show()

- caffe / tensorflow 通道顺序问题

img = np.transpose(img, (0, 2, 3, 1))

img = img.reshape(img.shape[0], img.shape[2], img.shape[3], img.shape[1])

img_new = zeros((img.shape[0], img.shape[2], img.shape[3], img.shape[1]), dtype = np.float32)
for c in range(0, img.shape[1]):
for i in range(0, img.shape[2]):
for j in range(0, img.shape[3]):
img_new[:,c,i,j] = img_new[:,i,j,c]

最新文章

  1. 使用LogMaster4Net实现应用程序日志的集中管理
  2. Markdown段落首行缩进的实现办法
  3. Ansible 模块命令介绍
  4. [译]angularjs directive design made easy
  5. Ruby on Rails框架开发学习
  6. C/C++指针内存分配小细节
  7. WebSocket学习
  8. 发现一个挺好用的adb logcat工具
  9. CCNP第四天 OSPF综合实验(1)
  10. shell中的重定向(2>&1)
  11. LeetCode_Decode Ways
  12. ASP.NET MVC View向Controller传值方式总结
  13. ASP.NET MVC导入excel到数据库
  14. C++中vector 容器的基本操作
  15. [Swift]LeetCode20. 有效的括号 | Valid Parentheses
  16. 关于Java____________Object类
  17. Python 基于Python从mysql表读取千万数据实践
  18. 浅析data:image/png;base64的应用
  19. spring MVC请求处理类注解属性详解
  20. iqueryable lambda表达式

热门文章

  1. net core体系-web应用程序-1VS2017构建一个简单的web
  2. 042 spring boot在启动之后,自动关闭
  3. Spring日记_02之搭建一个新项目
  4. day75 form 组件(对form表单进行输入值校验的一种方式)
  5. 为表格动态添加一行,miniui组件无效
  6. 满血复活--来自世一大的WAR
  7. 牛客练习赛37-筱玛的字符串-DP递推
  8. C# 正规则表达式
  9. XamarinAndroid组件教程RecylerView动画组件使用动画(2)
  10. HDU.5765.Bonds(DP 高维前缀和)