python如何提取图片的特定区域

 时间:2026-02-13 06:11:33

1、crop 方法函数原型为:

Image.crop(box=None)Returns a rectangular region from this image. The box is a 4-tuple defining the left, upper, right, and lower pixel coordinate. 

This is a lazy operation. Changes to the source image may or may not be reflected in the cropped image. To break the connection, call the load() method on the cropped copy. 

Parameters:    box – The crop rectangle, as a (left, upper, right, lower)-tuple. 

Return type:    Image 

Returns:    An Image object.

2、通过矩形的左上角的坐标和右下角的坐标,即可构造box,例如下面的代码:

box = (100, 100, 400, 400) 

region = im.crop(box)

3、通过提取除ROI时,上面例子为 region,保存ROI到图像则使用类 Image 的 save 方法:

region.save(filename)

4、写一个Demo例子,使用人脸数据库GENKI部分的图像做实验,该数据的数字子集GENKI-SZSL提供人脸区域的坐标和大小。提取代码如下:

from PIL import Image

import os

 src = '.'

imlist = open(src + '/GENKI-SZSL_Images.txt', 'r').readlines()

 rs = [float(line.split()[1]) for line in open(src + '/GENKI-SZSL_labels.txt', 'r').readlines()]

 cs = [float(line.split()[0]) for line in open(src + '/GENKI-SZSL_labels.txt', 'r').readlines()] 

ss = [float(line.split()[2]) for line in open(src + '/GENKI-SZSL_labels.txt', 'r').readlines()]

for i in range(0, len(rs)):    

path = src + '/images/' + imlist[i].strip()   

 filename = src + '/output/' + imlist[i].strip()   

 try:       

 im = Image.open(path)    

except:        

continue       

 r = rs[i]    

c = cs[i]    

s = ss[i]    

xLeft   = int(c - s/2)   

 yUpper  = int(r - s/2)    

xRight  = int(c + s/2)    

yLower  = int(r + s/2)    

region = im.crop((xLeft, yUpper, xRight, yLower))   

 region.save(filename)

  • html里面背景图片怎么设置调整
  • linux创建文件夹
  • 记事本怎么运行代码
  • eclipse启动时提示couldn't open jvm.cmg怎么办
  • 如何利用Java Swing绘制下拉框JComboBox
  • 热门搜索
    眼屎多是怎么回事 凉菜怎么做 不会说话怎么办 社保电脑号怎么查 指甲怎么长得快 万和燃气热水器怎么样 化妆水怎么用 教学内容怎么写 皮肤暗黄怎么调理 买车购置税怎么算