怎么在python找到pil库_如何使用PIL库查找子图像?

本文介绍如何在Python中使用PIL库进行像素完美搜索,查找大图像中的子图像。通过提供一个简单的示例代码,展示如何读取图像、比较像素并找到匹配的子图像位置。代码适用于Windows和OSX系统,但未在Linux上测试。
摘要由CSDN通过智能技术生成

我只用PIL才做到了。

一些注意事项:这是一个像素完美的搜索。它只是寻找匹配的RGB像素。

为了简单起见,我删除了alpha/transparency通道。我只寻找RGB像素。

此代码将整个子图像像素数组加载到内存中,同时将大图像保留在内存之外。在我的系统中,Python在1920x1200屏幕截图中为一个小40x30子图像搜索保留了大约26mib的内存。

这个简单的例子不是很有效,但是提高效率会增加复杂性。在这里,我把事情说得直截了当,容易理解。

这个例子适用于Windows和OSX。未在Linux上测试。它只拍摄主显示器的屏幕截图(用于多监视器设置)。

代码如下:import os

from itertools import izip

from PIL import Image, ImageGrab

def iter_rows(pil_image):

"""Yield tuple of pixels for each row in the image.

From:

http://stackoverflow.com/a/1625023/1198943

:param PIL.Image.Image pil_image: Image to read from.

:return: Yields rows.

:rtype: tuple

"""

iterator = izip(*(iter(pil_image.getdata()),) * pil_image.width)

for row in iterator:

yield row

def find_subimage(large_ima

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值