您的位置:首页 > 其它

PIL实现比较两个图片的不同(简单方法)

2019-01-09 11:02 155 查看

简单的处理:通过将图片每一个像素的RGB值提取出来,然后比较两个图片每一个像素的RGB值;该方法的问题是速度比较慢,需要消耗较大的空间;

from PIL import Image,ImageDraw

'''
思路:获取每个点像素值,
将两张图片同一位置的像素相减小于阀值,(颜色阈值:图像的转换是比较像素的过程,在比较两个像素时,如果RGB的颜色值
的差异小于颜色阈值,则可以认为这两个像素是相同的颜色,因此,颜色阈值越高,则颜色数量越少.)
得到位置对位置进行标记
'''

def compete_pix(im0, im1, i, j):
pix_im0 = im0.getpixel((i, j))
pix_im1 = im1.getpixel((i, j))
x=-1
y=-1
# 定义阀值
threshold = 60
if abs(pix_im0[0] - pix_im1[0]) < threshold and abs(pix_im0[1] - pix_im1[1]) < threshold and abs(
pix_im0[2] - pix_im1[2]) < threshold:
return x,y
else:
x=i
y=j
return x,y

def main():
im0 = Image.open('0.jpg')
im1 = Image.open('1.jpg')
im2=im1.copy()
draw=ImageDraw.Draw(im2)

# 对每一个的像素进行比较(RGB)
for i in range(im0.size[0]):
for j in range(im0.size[1]):
x,y=compete_pix(im0, im1, i, j)
#对图片进行绘制
if x and y:
draw.point((x,y),fill=(0,255,0))
im2.show()

def text():

im1 = Image.open('1.jpg')
im2 = im1.copy()
draw = ImageDraw.Draw(im1)

if __name__ == '__main__':
text()
main()

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: