python常用图片操作:创建、读写、裁剪

2020-09-14  本文已影响0人  jadefan

python有各种组件的加持,功能强大,操作图片比较方便快捷,代码也比较简洁
整理下常用的操作,以后备用

一、图片创建

方法一
import numpy as np
import cv2
...
# 创建空图片
img = np.zeros((imgHeight, imgWidth, 3), np.uint8)
# 根据矢量数据填充颜色
area = np.array(regionXY)
cv2.fillPoly(img, [area], (255, 255, 255))

cv2.imwrite(path, img)
方法二
from PIL import Image
...
image = Image.new(mode='RGBA', size=(imgWidth, imgHeight))
for x in range(imgWidth-1):
  for y in range(imgHeight-1):
    pixdata[x,y] = (255,255,255,255)
image.save(imgPath)

二、图片读写

from PIL import Image
...
img = Image.open(imgPath)    #读入
size = img.size()
pixdata = img.load()
pixdata[0,0] = (255,255,255,255)  #修改颜色
img.save(imgPath)

三、图片裁剪

根据规则提取像素
  1. 定义提取规则,比如某某颜色、符合某数据函数的像素、距离判断、图形关系等
  2. 遍历每个像素,修改或另存
规则矩形裁剪
from PIL import Image
...
img = Image.open(imgPath)
box = (left, upper, right, lower)   #裁剪范围
region = img.crop(box)
region.save(regionPath)
不规则多边形

实际项目中会有用不规则多边形裁剪图像,比如某行政区划、某物品轮廓等
如果遍历像素判断与矢量图形的关系,执行效率会非常慢,

  1. 将用turtlecv2掩膜矢量数据转为栅格数据,比如jpg\png,
  2. 确定目标图片和掩膜像素的对应关系
  3. 遍历目标图片像素操作
上一篇下一篇

猜你喜欢

热点阅读