python常用圖片操作:創建、讀寫、裁剪

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. 遍歷目標圖片像素操作
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章