首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在PIL中查找所有非透明区域的所有边界矩形

在PIL中,要查找所有非透明区域的所有边界矩形,可以按照以下步骤进行:

  1. 导入PIL库:首先需要导入PIL库,可以使用以下代码:from PIL import Image, ImageDraw
  2. 打开图像:使用Image.open()函数打开需要处理的图像文件,例如:image = Image.open("image.png")
  3. 创建图像副本:为了不修改原始图像,可以创建一个副本进行处理,使用copy()函数创建副本:image_copy = image.copy()
  4. 转换图像为RGBA模式:为了能够获取图像的透明度信息,需要将图像转换为RGBA模式,使用convert()函数进行转换:image_copy = image_copy.convert("RGBA")
  5. 获取图像像素数据:使用load()函数获取图像的像素数据,以便后续处理:pixels = image_copy.load()
  6. 查找边界矩形:遍历图像的每个像素,判断其透明度是否为0,如果不为0,则表示是非透明区域的一部分。根据这些非透明像素的位置,可以计算出边界矩形的位置和大小。可以使用以下代码实现:# 初始化边界矩形的坐标 left = image_copy.width top = image_copy.height right = 0 bottom = 0 # 遍历图像的每个像素 for y in range(image_copy.height): for x in range(image_copy.width): # 获取像素的透明度 alpha = pixels[x, y][3] # 判断透明度是否为0 if alpha != 0: # 更新边界矩形的坐标 left = min(left, x) top = min(top, y) right = max(right, x) bottom = max(bottom, y) # 计算边界矩形的大小 width = right - left + 1 height = bottom - top + 1 # 打印边界矩形的位置和大小 print("边界矩形位置:左上角坐标({}, {}),右下角坐标({}, {})".format(left, top, right, bottom)) print("边界矩形大小:宽度{},高度{}".format(width, height))
  7. 绘制边界矩形(可选):如果需要在图像上绘制边界矩形,可以使用ImageDraw.Draw()函数创建一个绘图对象,并使用rectangle()函数绘制矩形:# 创建绘图对象 draw = ImageDraw.Draw(image_copy) # 绘制边界矩形 draw.rectangle([(left, top), (right, bottom)], outline="red") # 显示图像 image_copy.show()
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++ 无序字符串查找所有重复字符【两种方法】

参考链接: C++程序,找出一个字符ASCII值 C++ 无序字符串查找所有重复字符   Example:给定字符串“ABCDBGAC”,打印“A B C”  #include <iostream...    string s = a;     for (int i = 0; i < s.size() - 1; i++)     {         if (s[i] == '#') //判断i指针指向是否为输出过字符...            continue;         int m = 1; //判断j指针指向是否为输出过字符         for (int j = i + 1; j <= s.size...                if (m == 1)                     cout << s[i] << " ";                 s[j] = '#'; //对输出过字符做标记...                m = 0;      //对输出过字符做标记             }         }     } } void PrintIterateChar2(const

3.8K30

可以媲美 PS PIL 图片处理库

RGB 颜色模式,计算机为红色、绿色、蓝色分别分配 8 bit 空间,也意味着红色、绿色、蓝色各自分量变化是 0~255(8bit 二进制换算成十进制度最大值)之间。...getColor( ) 方法用使用者提供颜色名字为键,字典查找到对应颜色,再转换成元组后返回。...20)) img.show() crop( ) 方法: 裁剪图片,裁剪时需要在原图片中确定一个需要保留矩形区域。...from PIL import Image img = Image.open("dog.jpg") # 4 元组,前 2 个数字 表示矩形左上角,后 2 个数字 表示矩形右下角 img = img.crop...box: 图片被粘贴位置。box 可以是一个 2 元组,这 2 个表示小狗图片左上角背景图片上位置。如果是 4 元组,则被粘贴图片(小狗图片)必须和 4 元组所描述矩形区域大小一样。

1K20
  • 查找目录下所有java文件查找Java文件Toast在对应行找出对应id使用idString查找对应toast提示信息。

    背景 最近有个简单迭代需求,需要统计下整个项目内Toastmsg, 这个有人说直接快捷键查找下,但这里比较坑爹是项目中查出对应有1000多处。...几乎是边查文档编写,记录写编写过程: 查找目录下所有java文件 查找Java文件中含有Toast相关行 在对应行找出对应id 使用idString查找对应toast提示信息。...查找目录下所有java文件 这个我是直接copy网上递归遍历,省略。...查找Java文件Toast 需要找出Toast特征,项目中有两个Toast类 BannerTips和ToastUtils 两个类。 1.先代码过滤对应行。...在对应行找出对应id 使用idString查找对应toast提示信息。 最后去重。 最后一个比较简单,可以自己写,也可以解析下xml写。

    3.9K40

    PIL

    如果不对变量mode赋值,该方法将会选择一种模式,没有调色板情况下,使得图像和调色板所有信息都可以被表示出来。...八、Info类im.info ⇒ dictionary存储图像相关数据字典。文件句柄使用该字典传递从文件读取各种图像信息。...十一、Crop类im.crop(box) ⇒ image从当前图像返回一个矩形区域拷贝。变量box是一个四元组,定义了左、上、右和下像素坐标。...三十、Seek类im.seek(frame)在给定文件序列查找指定帧。如果查找超越了序列末尾,则产生一个EOFError异常。当文件序列被打开时,PIL库自动指定到第0帧上。...在当前PIL版本,参数method为EXTENT(裁剪出一个矩形区域),AFFINE(仿射变换),QUAD(将正方形转换为矩形),MESH(一个操作映射多个正方形)或者PERSPECTIVE。

    2.3K20

    「Adobe国际认证」Adobe Photoshop,如何裁剪并拉直照片?

    裁剪工具是非破坏性,您可以选择保留裁剪像素以便稍后优化裁剪边界。裁剪工具还提供直观方法,可让您在裁剪时拉直照片。 对于所有操作,可视化指南都提供了交互式预览。...您裁剪或拉直照片时,实时反馈可帮助您以可视方式呈现最终结果。 裁剪照片 1.工具栏,选择裁剪工具 。裁剪边界显示照片边缘上。...如果您启用“自动调整不透明度”,那么当您编辑裁剪边界时会降低不透明度。 删除裁剪像素禁用此选项以应用破坏性裁剪,并在裁剪边界外部保留像素。破坏性裁剪不会移去任何像素。...您可以稍后单击图像以查看当前裁剪边界之外区域。 启用此选项以删除裁剪区域外部任何像素。这些像素将丢失,并且不可用于以后调整。 注意:右键单击裁剪框,以从上下文菜单访问常用裁剪选项。...请按以下步骤进行操作: 1.工具栏,选择裁剪工具 ()。裁剪边界显示照片边缘上。 2.选项栏,选择“内容识别”。默认裁剪矩形会扩大,以包含整个图像。

    2.9K10

    【Python从入门到精通】(二十七)更进一步了解Pillow吧!

    读取网页图片 读取网页图片基本实现方式是:首先利用requests库读取当前图片链接内容,接着将内容转成二进制数据,通过open方法将该二进制数据,最后通过save方法进行保存。...裁取区域范围是(left, upper, right, lower) 比如从某个宽高都是400图片中裁剪一个是宽高都是100正方形区域,只需要指定裁剪区域坐标是: (0, 0, 100, 100...画弧形 ImageDraw.arc(xy, start, end, fill=None, width=0) 在给定区域范围内,从开始角到结束角之间绘制一条圆弧 xy--> 定义边界两个点,传入格式是...(xy, radius=0, fill=None, outline=None, width=1) 该方法可以画一个圆角矩形 xy--> 两个坐标点之间画一条直线,坐标点传入方式是[(x, y), (...首先,用PILImage函数读取图片 接着,新建一张图(尺寸和原图一样) 然后,新建图象上用PILImageDraw把字给画上去,字颜色从原图处获取。

    90021

    python3之成像库pillow

    ,如RGB有三个通道,而灰度图像则只有一个通道 图像实际上是像素数据矩形图,图像模式定义了图像像素类型和深度,它在图像定义mode模式概念,如: 1:1位像素,表示黑和白,占8bit,图像表示称为位图...0则代表黑色,都为255则代表白色 RGBA:为带透明蒙版真彩色,其中A为alpha透明度,占用4x8位像素 其他还有打印分色CMYK不是很常用不多做介绍 PIL使用笛卡尔像素坐标系统,图像坐标从左上角开始...image1,Image.Image) img1=image1.convert('L') #将图像转换为灰色 img1.show() im.copy():拷贝图像 im.crop(box):从当前图像返回矩形区域副本...print(im1.getbands()) print(im.getbands()) im1.show() # ('L',) ('R', 'G', 'B') im.getbbox():计算图像中非零区域边界框...输入图像4x4矩阵上进行立方插值,做下采样时该滤波器使用了固定输入模板 #ANTIALIAS:平滑滤波,对所有可以影响输出像素输入像素进行高质量重采样滤波,以计算输出像素值,这个滤波器只用于改变尺寸和缩略图方法

    1.5K20

    python浮雕图片_python图片处理PIL

    输入图像2×2矩阵上进行线性插值。注意:PIL的当前版本,做下采样时该滤波器使用了固定输入模板。 BICUBIC:双立方滤波。输入图像4×4矩阵上进行立方插值。...对所有可以影响输出像素输入像素进行高质量重采样滤波,以计算输出像素值。在当前PIL版本,这个滤波器只用于改变尺寸和缩略图方法。...注意:在当前PIL版本,ANTIALIAS滤波器是下采样(例如,将一个大图像转换为小图)时唯一正确滤波器。...#从当前图像返回一个矩形区域拷贝。...具体参考图像滤波ImageFilter 模块应用,该模块,预先定义了很多增强滤波器,可以通过filter( )函数使用 例子: img = Image.open(“1.jpg”) bluF= img.filter

    2K30

    OpenCV 4基础篇| OpenCV图像裁切

    img:图像数据,nparray 多维数组 x, y:整数,像素值,裁剪矩形区域左上角坐标值 w, h:整数,像素值,裁剪矩形区域宽度、高度 retval:裁剪后获得 OpenCV 图像,nparray...(ROI) windowName:选择区域被显示窗口名字 img:要在什么图片上选择ROI showCrosshair:是否矩形框里画十字线. fromCenter:是否是从矩形中心开始画...在这种情况下,你可能需要寻找其他方法来选择图像 ROI,例如使用固定坐标、图像分割算法等。...retval:一个新 Image 对象,原始图像中被裁剪出来矩形区域 3.2 注意事项 crop()函数接受一个包含四个数字元组参数,表示裁剪区域左上角和右下角坐标。...裁剪区域坐标必须在图像边界内。如果裁剪区域坐标超出了图像边界,将会引发一个ValueError异常。因此,调用crop()函数之前,最好先检查裁剪区域坐标是否有效。

    36100

    快速检索碰撞图形:四叉树碰撞检测

    看这篇文章 《Canvas 性能优化:脏矩形渲染》 CPU 密集在哪? 需要遍历 所有的图形,判断它们是否和脏矩形发生相交(碰撞),保存发生碰抓给你图形,将它们局部进行重绘。...对这些子节点重复前面的操作,进行递归,找到所有的图形。 这些图形就是碰撞矩形可能相交矩形,但相对所有图形,又不至于太多。 四叉树碰撞检测算法 先看看经典算法实现。...: // 传入一个矩形,取出它所在节点所有矩形 // 这个方法能返回 Quadtree.prototype.retrieve = function (pRect) { // 提取目标矩形所在区间下所有矩形...松散四叉树 经典四叉树有个问题,就是如果图形物理信息是比较动态,当总是边界附近时,就会发生频繁地将图形从一个节点取出并放到另个节点下。 对此我们可以额外设置一个出口边界。...相比前面两种单维范围查找,R 树能做高效高维查找

    1.3K20

    我新鲜出炉 plist 图集拆图工具!github

    PngSplit 导出子图有两大缺陷: 图像周围透明区域,并不是还原碎图最原始样子; 无法还原文件名,特别是序列帧文件,文件顺序是乱序; 这样生成资源,要重新制作动画难度非常之大,还需要花更多时间...代码大概分成两大部分: 解析 plist 文件,解析出子图图集中矩形位置 通过分析出子图矩形数据,将子图纹理导出生成图像 大思维有了,解析 plist 应该是有对应工具库,我也是 Python...有一个名为 PIL 库显示最多,简单了解一下: ❝python image library 图像库,处理图像功能,该库提供了广泛文件格式支持,如JPEG、PNG、GIF、等,它提供了图像档案、图像显示...注意安装时,使用是:pip install pillow ❞ 大概花了半个小时,简单了解了一下 PIL 功能,其中 Image 模块正是我需要 : # 从当前图像返回矩形区域副本 # box是一个...图像 # box参数我给是偏移2元组 base.paste(image, (offset_x, offset_y)) 功能搞定生成图片非常完美,还原了 plist 文件名、原始大小、透明区域偏移

    5.4K50

    Python 自动化指南(繁琐工作自动化)第二版:十九、处理图像

    图 19-1:某种古代数据存储设备28×27图像 x 和 y 坐标 Pillow 许多函数和方法都带有框元组参数。这意味着 Pillow 需要一个表示图像矩形区域四个整数坐标的元组。...图 19-2:框元组(3, 1, 9, 6)表示区域 用 Pillow 操纵图像 现在你知道了颜色和坐标 Pillow 是如何工作,让我们使用 Pillow 来操作一个图像。...裁剪图像 裁剪图像是指选择图像内一个矩形区域,并删除矩形所有内容。对Image对象crop()方法接受一个框元组,并返回一个表示裁剪图像Image对象。...zophie.png矩形区域。...如果您忘记了第三个参数,Logo透明像素将被复制为纯白像素(右)。 类似程序创意 能够成批合成图像或修改图像大小许多应用是有用

    2.5K50

    【Java AWT 图形界面编程】Canvas 组件中使用 Graphics 绘图 ② ( AWT 绘图步骤 | Graphics 绘图常用 API )

    paint(Graphics g) 函数 进行关联 ; 然后 , 自定义 Canvas 组件 重写 Component#paint(Graphics g) 函数 , 先调用 Graphics...* 矩形左右边在 * X和X +width-1。 * 顶部和底部边缘 * Y和Y +高-1。...* 角度是相对于边界矩形正方形范围指定, * 这样45度总是落在从椭圆中心到边界矩形右上角直线上。...* * 因此,如果边界矩形一个轴上明显比另一个轴长, * 则到弧段开始和结束角度将沿着边界较长轴倾斜得更远。...* 在此图形上下文坐标空间中,图像左上角位于(x,y)处。 * 图像透明像素不会影响已经存在像素。

    1.1K10

    Python图片处理模块PIL操作方法(pillow)

    这是PIL 1.1.3版本中新滤波器。对所有可以影响输出像素输入像素进行高质量重采样滤波,以计算输出像素值。在当前PIL版本,这个滤波器只用于改变尺寸和缩略图方法。...文件句柄使用该字典传递从文件读取各种图像信息。大多数方法返回新图像时都会忽略这个字典;因为字典键并非标准化,对于一个方法,它不能知道自己操作如何影响这个字典。...如果不对变量mode赋值,该方法将会选择一种模式,没有调色板情况下,使得图像和调色板所有信息都可以被表示出来。...3、Crop 定义:im.crop(box) ⇒ image 含义:从当前图像返回一个矩形区域拷贝。变量box是一个四元组,定义了左、上、右和下像素坐标。 这是一个懒操作。...8、 Getbbox 定义:im.getbbox() ⇒ 4-tuple or None 含义:计算图像区域包围盒。这个包围盒是一个4元组,定义了左、上、右和下像素坐标。

    4.5K20

    目标检测系列之一(候选框、IOU、NMS)

    目标检测则关注是图像特定物体目标,并给出该目标的类别信息(Classification,类别概率表示)和位置信息(Localization,矩形坐标表示)。...基于候选区域两阶段算法检测准确性和定位精度上有优势,而一阶段算法在运算速度上占优势。 我们首先介绍一些目标检测涉及到名词理解,如候选框、IOU交并比、NMS极大值抑制等。...2.1 滑窗法(Sliding Window) 滑窗法是采用不同大小和长宽比窗口图像上进行从左到右、从上到下滑动搜索,并对这些窗口进行分类,实现对整张图像候选框查找。...、大小等)采用子区域合并方法进行区域迭代合并,生成外切矩形,也就是候选框。...; 3)依次对得分越来越小候选框重复步骤②,同样剔除IOU得分较小候选框; 4)重复步骤③直到遍历完该列所有建议框; 5)遍历完2000×20维矩阵所有列,即所有物体种类都做一遍极大值抑制; Python

    6K10

    超全Python图像处理讲解(多模块实现)

    1.3、图像混合 (1)透明度混合 透明度混合主要是使用**Imageblend(im1, im2, alpha)**方法,对该方法解释如下: im1:Image对象,在混合过程透明度设置为...(1-apha) im2:Image对象,在混合过程透明度设置为(apha) alpha:透明度,取值是0-1。...当透明度为0是,显示im1对象;当透明度为1时,显示im2对象 注意:im1和im2大小必须一样,且mode都为RGB 代码实现如下: from PIL import Image # 打开im1...细心读者应该可以发现,这个抠鼻屎图片和笔者头像并不完全一样。血色方面,笔者头像确实要差几分。 注意:笔者日常生活可不是天天大街上抠鼻屎那种。...我们使用该模块进行绘制时,我们需要先获取ImageDraw.Draw对象,获取方式如下: from PIL import ImageDraw # 构造函数,im为一个Image对象 drawer =

    1.2K10

    Google Earth Engine(GEE)——JavaScript基本功能介绍(单个几何特征简单计算)

    (input); 集合上映射函数 //mapGEE中非常常用 var result = input.map(functionName); 集合上映射函数将函数应用于集合每个元素。...几何上常见操作 寻找几何面积 var geoArea = geometry.area(maxError); 默认情况下,地球引擎所有单位都以米为单位。...减少几何顶点数 //这个非常有用,因为当你上传矢量边界过于复杂或者节点数太多化会报错,这是一个不错选择 var simpGeo = geometry.simplify(maxError); 寻找几何质心...(radius, maxError); 查找几何边界矩形 //这个一般会用到边界最大框选,filterbounds一般会用来进行边界筛选也是通过矩形方式 var bounGeo = geometry.bounds...(maxError); 查找两个或多个几何图形之间公共区域 //就是arcgis相交 var interGeo = geometry1.intersection(geometry2, maxError

    24710

    对象发现

    包含了几乎所有的图片处理方法,例如常见边界、膨胀、腐蚀、画矩形、画圆等。本次实践过程我使用到了三种方法,用来识别图像液滴。...第一种是常规处理方法,先对图片进行边界确定,然后膨胀、腐蚀,最后寻找液滴;第二种方法是由于第一方法会将边缘勿识别为液滴,故第一种方法基础上加上边缘界定,想借此消除边界误差;第三种是用多个液滴模板...可视化部分,我们使用cv2.drawContours 方法绘出我们找到对象,与实际情况对比,观察误差存在区域以及特点。下面给出每一步操作代码。...max_area 轮廓围成区域最大面积 轮廓先要满足min_area 和 max_area 条件,然后需要满足包含轮廓最小矩形长宽比小于rate """ con = []; for...用常规方法发现对象,很大程度上依赖cv2.Canny 方法,及以来cv2 库寻找边界方法。如果,边界能被精确识别,那么对象发现将会是零误差。因为我们后续操作都是建立边界轮廓上。

    47820
    领券