Python中图片基本处理操作


使用python进行图像处理编程很方便,读取图片,显示图片,保存图片


1、opencv
2、PIL(pillow)
3、matplotlib
4、scipy
5、skimage


1、opencv图片基本操作

图片就是矩阵,矩阵就是图片 真彩图片是BGR格式
重要的事情说三遍:用opencv读取的图片格式是numpy!!!彩色图片维度是(高度,宽度,通道数)!!!数据类型是uint8!!!
代码如下:

import cv2
import numpy as np  

img_name = r"C:\Users\Administrator\Desktop\machine_learning\face_study\pos\1.jpg"
img = cv2.imread(img_name)      # 读取图片
cv2.imshow("figure1", img)      # 显示图片
filename = img_name             # 保存图片的文件
cv2.imwrite(filename, img)      # 保存图片

# h: 高  w: 宽  c:  通道数
h , w, c = img.shape
print(img.shape)   # (h, w, c)
# 显示图像的上面一半
cv2.imshow("figure1_up", img[0:(int)(h/2)])
# cv2.imshow("figure1_up", img[0:(int)(h/2),:,:])   # 等价于上面一行代码
cv2.waitKey()
opencv的坑

别跳!!!
opencv对于读进来的图片的通道排列是BGR,而不是主流的RGB!谨记!

#opencv读入的矩阵是BGR,如果想转为RGB,可以这么转
img4 = cv2.imread('1.jpg')
img4 = cv2.cvtColor(img4,cv2.COLOR_BGR2RGB)

2、PIL图片处理基本操作

PIL是矩阵进行封装的东西

from PIL import Image
import numpy as np

img = Image.open(img_name)
img.show() # 显示图片

gray = Image.open(img_name).convert('L')
gray.show()

print(img.format)
print(img.size)  # 注意,省略了通道 (w,h)
print(img.mode)  # L为灰度图,RGB为真彩色,RGBA为加了透明通道

# pillow读进来的图片不是矩阵,我们将图片转换为矩阵
arr = np.array(img)
print(arr.shape)
print(arr.dtype)
print(arr)

# 矩阵再转换为图片
new_img = Image.fromarray(arr)
new_img.save("1.jpg")

cv2.waitKey()

3、matplotlib图片操作教程

图片就是矩阵,矩阵就是图片 真彩图片是RGB格式

plt.imread读入的就是一个矩阵,跟opencv一样,但彩图读进的是RGB,与opencv有区别

无论用什么库读入函数,只要将读入的图片转换为矩阵,就可以用matplotlib进行操作


import matplotlib.pyplot as plt
import numpy as np


img_name = r"C:\Users\Administrator\Desktop\machine_learning\face_study\pos\1.jpg"
image = plt.imread(img_name)   # 读取图片
plt.imshow(image)              # 显示图片
plt.axis('off')
plt.savefig("1.jpg")           # 保存图片
plt.show()


#plt.imread读入的就是一个矩阵,跟opencv一样,但彩图读进的是RGB,与opencv有区别
print(image.shape) # (h,w,c)
print(image.size)
print(image.dtype)
print(image)

说明:对于matplotlib矩阵就是图片 图片就是矩阵

import numpy as np
import matplotlib.pyplot as plt

img = np.zeros((2,2,3),dtype=np.uint8)

img[0,0] = [255,0,0]      # 红色
img[0,1] = [0,255,0]      # 绿色
img[1,0] = [0,0,255]      # 蓝色

plt.imshow(img)
plt.show()

这里写图片描述


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值