gpt4 book ai didi

python - 如何使用python在另一个图像中查找图像

转载 作者:IT老高 更新时间:2023-10-28 20:41:19 31 4
gpt4 key购买 nike

我正在尝试使用 python 来确定一个(小)图像是否在另一个(大)图像中。

在我完全走错路之前有什么建议吗?

/edit:好的,一些想法:我正在使用 PIL,并且我正在将每个图像转换为“P”模式,这样我就可以将每个像素作为一个整数进行比较。我正在尝试实现类似 Boyer–Moore 字符串搜索或 Knuth–Morris–Pratt 算法之类的东西,但是是二维的。

也许这会有所帮助:我们正在搜索

,而不是搜索 ABC in XXXABCXXX (answer=4)
ABC    
DEF
GHI

XXXXX        
XABCX
XDEFX
XGHIX
XXXXX

(answer=(2,2))

最佳答案

编辑:好的,这是这样做的天真的方法:

import Image, numpy

def subimg(img1,img2):
img1=numpy.asarray(img1)
img2=numpy.asarray(img2)

#img1=numpy.array([[1,2,3],[4,5,6],[7,8,9]])
#img2=numpy.array([[0,0,0,0,0],[0,1,2,3,0],[0,4,5,6,0],[0,7,8,9,0],[0,0,0,0,0]])

img1y=img1.shape[0]
img1x=img1.shape[1]

img2y=img2.shape[0]
img2x=img2.shape[1]

stopy=img2y-img1y+1
stopx=img2x-img1x+1

for x1 in range(0,stopx):
for y1 in range(0,stopy):
x2=x1+img1x
y2=y1+img1y

pic=img2[y1:y2,x1:x2]
test=pic==img1

if test.all():
return x1, y1

return False

small=Image.open('small.tif')
big=Image.open('big.tif')

print subimg(small, big)

它工作得很好,但我想加快速度。我认为关键在于数组“测试”,我们可以使用它来跳过图像中的某些位置。

编辑 2:确保使用无损格式的图像进行测试。

Mac 上,安装 Pillow 和 from PIL import Image

关于python - 如何使用python在另一个图像中查找图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3049370/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com