栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python | 图像抓取、加载与通道数处理

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python | 图像抓取、加载与通道数处理

这篇文章整理了在处理大量图片数据集时可能需要用到的一些东西。

主要包括:

  • 用urllib根据图片url抓取图片并保存;

  • 用PIL的Image图像库加载图片;

  • 用crop函数对图像进行裁剪;

  • 处理数据集中的图像通道数,使其都为3通道;

1. 根据url下载图片

数据集很大的情况,常常需要我们自己去下载图片,这个时候就需要有个程序帮我们自动下载了。

  • 用urllib获取图片并保存

import urllib# img_url: the url of image# img_path: the path you want to save imageurllib.urlretrieve(img_url,img_path)
2. 图片加载与处理

1. 用PIL加载图像

from PIL import Imagedef get_image_from_path(img_path,img_region):
    image = Image.open(img_path)
    image = process_image_channels(image, img_path)
    image = image.crop(img_region)    return image

2. 关于crop函数

  • 一定要注意bounding_box的传入参数;

  • crop接受的参数为(左上x,左上y,右下x,右下y)

  • python的坐标系为最左上角为(0,0),横向x,纵向y;

  • 这里踩了好久的坑。╮(╯﹏╰)╭

3. 关于处理图像通道

  • 在这次处理的数据集中有jpg的图像,也有png的图像;

  • 以前从来不知道png会有RGBA4个通道甚至有些图片只有一个A通道,所以如果没有提前处理后面训练或者换测试的时候会时不时的给你一个bug小彩蛋哈哈哈。

  • 关键语句:

def process_image_channels(image, image_path):
    # process the 4 channels .png
    if image.mode == 'RGBA':
        r, g, b, a = image.split()
        image = Image.merge("RGB", (r, g, b))    # process the 1 channel image
    elif image.mode != 'RGB':
        image = image.convert("RGB")
        os.remove(image_path)
        image.save(image_path)    return image

简单的做个整理吧,后期有新的问题也会继续补充在这里。



作者:与阳光共进早餐
链接:https://www.jianshu.com/p/009fc2e4348a


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/221463.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号