Python提取图片的ROI

图像处理经常需要提取图片的ROI,本文使用Python提取图片的ROI。

使用的Module是PIL (Pillow),一个图像处理库,用到的函数为类 Image 中的 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.

知道矩形的左上角的坐标和右下角的坐标,即可构造box,例如下面的代码

box = (100, 100, 400, 400)
region = im.crop(box)

知道如何提取除ROI时,上面例子为 region,保存ROI到图像则使用类 Image 的 save 方法

region.save(filename)

给出一个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)

代码打包下载:http://pan.baidu.com/s/1dD4opKP 密码:ygu7

Pillow的项目文档地址: http://pillow.readthedocs.org

时间: 2024-12-09 14:12:29

Python提取图片的ROI的相关文章

Python 提取新浪微博的博文中的元素(包含Text, Screen_name)

CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-7-8 @author: guaguastd @name: extractWeiboEntities.py ''' if __name__ == '__main__': import json # get weibo_api to access sina api from sinaWeiboLogin import sinaWeiboLogin sinaWeib

python实现图片爬虫

#encoding:utf-8 import sys reload(sys) sys.setdefaultencoding('utf8') from sgmllib import SGMLParser import re import urllib class URLLister(SGMLParser): def start_a(self, attrs): url = [v for k, v in attrs if k=='href'] if url : urll = url[0] else :

使用NPOI从Excel中提取图片及图片位置信息

原文:使用NPOI从Excel中提取图片及图片位置信息 问题背景: 话说,在ExcelReport的开发过程中,有一个比较棘手的问题:怎么复制图片呢? 当然,解决这个问题的第一步是:能使用NPOI提取到图片及图片的位置信息.到这里,一切想法都很顺利.但NPOI到底怎么提取图片及图片的位置信息呢?NPOI能不能提取到图片的位置信息呢? 这是两个问题.是两个让BaiGoogleDu几近沉默的问题.但官方教程的评论中还是流露出了答案的蛛丝马迹. 哇咔咔,这是我去看源码寻答案的的动力. 此处省去(N多字

python获取图片base64编码的例子

用python语言获得图片的Base64编码. #!/usr/bin/env python # -*- coding: utf-8 -*- # www.jbxue.com import os, base64 icon = open('ya.png','rb') iconData = icon.read() iconData = base64.b64encode(iconData) LIMIT = 60 liIcon = [] while True: sLimit = iconData[:LIMI

用Python更改图片尺寸大小

1.PIL包推荐Pillow. 2.源码: #encoding=utf-8 #author: walker #date: 2014-05-15 #function: 更改图片尺寸大小 import os import os.path from PIL import Image ''' filein: 输入图片 fileout: 输出图片 width: 输出图片宽度 height:输出图片高度 type:输出图片类型(png, gif, jpeg...) ''' def ResizeImage(f

python 读取图片的尺寸、分辨率

#需要安装PIL模块 #encoding=gbk#-------------------------------------------------------------------------------# Name: picRead# Purpose:## Author: wangchao## Created: 27/06/2014# Copyright: (c) wangchao 2014# Licence: <your licence>#-----------------------

Optipng,jpegoptim应用,用python实现图片压缩,让你的网站变得更快

compress images according to google suggestion. 1.环境:ubuntu12.04 . python 2.7.3 2.工具:optipng .jpegoptim. 3.安装工具:a.    sudo apt-get install optipng b.    sudo apt-get install jpegoptim 4. a. 使用方法: optipng    /filepath/filename.png. 一个例子: optipng  /hom

Python提取Linux内核源代码的目录结构

今天用Python提取了Linux内核源代码的目录树结构,没有怎么写过脚本程序,我居然折腾了2个小时,先是如何枚举出给定目录下的所有文件和文件夹,os.walk可以实现列举,但是os.walk是只给出目录名和文件名,而没有绝对路径.使用os.path.listdir可以达到这个目的,然后是创建目录,由于当目录存在是会提示创建失败的错误,所以我先想删除所有目录,然后再创建,但是发现还是有问题,最好还是使用判断如果不存在才创建目录,存在时就不创建,贴下代码: # @This script can b

Python 提取LinkedIn用户的人脉

CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-8-18 @author: guaguastd @name: linkedin_connection_retrieve.py ''' # import login from login import linkedin_login # import json import json from prettytable import PrettyTable # acc