python的opencv、pillow、numpy库图片读取、转换、裁剪等常用代码

  • 导入opencv、np、pillow模块
import cv2
import numpy as np
from PIL import Image, ImageOps
  • pil与opencv库读取、保存、显示图片
# PIL库读取图片
pil_img = Image.open("img.png")
# PIL库保存图片到磁盘
pil_img.save("pil_img.png")
# PIL库显示图片
pil_img.show()

# opencv库读取图片
cv2_img=cv2.imread("img.png")
# opencv库保存图片到磁盘
cv2.imwrite("cv2.png", cv2_img)
# opencv库显示图片
cv2.imshow("cv2_img", cv2_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • pil与opencv库格式相互转换:
#pil色彩空间转换
pil_img = pil_img.convert('RGBA')

# opencv转pil:cv2是用np数组存储数据的,等同于np转pil
# cv2色彩空间转换,默认是BGR转为RGB
cv2_img = cv2.cvtColor(cv2_img, cv2.COLOR_BGR2RGB)
pil_img = Image.fromarray(cv2_img)
# pil转opencv格式的np数组:
pil_img = Image.open("img.png")
np_img_array = np.asarray(pil_img)
# 色彩空间转换
cv2_img = cv2.cvtColor(np_img_array, cv2.COLOR_RGB2BGR)
  • pil与opencv库裁剪图片
# pil裁剪图片:
# 参数分别为:左上角坐标lt_x, lt_y 右下角坐标rb_x, rb_y 
pil_img = pil_img.crop((lt_x, lt_y, rb_x, rb_y))
#opencv即np数组裁剪图片:
np_img_array = np_img_array[lt_y:rb_y, lt_x:rb_x]
  • pil与opencv库小图复制到大图中
# pil生成背景图:
pil_bg_img = Image.new("RGBA", (1920, 1080), (255, 255, 255, 0))
# 将小图复制到背景图中
pil_bg_img.paste(pil_img, (x, y))
# opencv即np数组生成背景图:
opencv_bg_img = np.zeros((1920, 1080, 3), dtype='uint8') 
# 替换坐标范围数组数据
opencv_bg_img[lt_y:rb_y, lt_x:rb_x] = cv2_img[lt_y:rb_y, lt_x:rb_x]
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值