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)
三、图片裁剪
根据规则提取像素
- 定义提取规则,比如某某颜色、符合某数据函数的像素、距离判断、图形关系等
- 遍历每个像素,修改或另存
规则矩形裁剪
from PIL import Image
...
img = Image.open(imgPath)
box = (left, upper, right, lower) #裁剪范围
region = img.crop(box)
region.save(regionPath)
不规则多边形
实际项目中会有用不规则多边形裁剪图像,比如某行政区划、某物品轮廓等
如果遍历像素判断与矢量图形的关系,执行效率会非常慢,
- 将用
turtle
或cv2
掩膜矢量数据转为栅格数据,比如jpg\png, - 确定目标图片和掩膜像素的对应关系
- 遍历目标图片像素操作
网友评论