python 多点比色
时间: 2023-12-16 12:28:29 浏览: 40
以下是Python多点比色的示例代码:
```python
from PIL import Image
import math
def compare_color(color1, color2):
"""
计算两个颜色之间的欧几里得距离
"""
r1, g1, b1 = color1
r2, g2, b2 = color2
return math.sqrt((r1 - r2) ** 2 + (g1 - g2) ** 2 + (b1 - b2) ** 2)
def compare_image_color(image_path, colors, sim):
"""
比较图片中是否存在指定颜色
"""
image = Image.open(image_path)
width, height = image.size
pixels = image.load()
for x in range(width):
for y in range(height):
pixel_color = pixels[x, y]
for color in colors:
color_list = color.split('-')
if len(color_list) == 1:
# 比较单一颜色
if compare_color(pixel_color, tuple(int(color[i:i+2], 16) for i in (0, 2, 4))) <= sim:
return True
else:
# 比较偏色
color1, color2 = color_list
if compare_color(pixel_color, tuple(int(color1[i:i+2], 16) for i in (0, 2, 4))) <= sim or \
compare_color(pixel_color, tuple(int(color2[i:i+2], 16) for i in (0, 2, 4))) <= sim:
return True
return False
# 示例用法
image_path = 'example.png'
colors = ['FFFFFF', '000000', 'FF0000-00FF00']
sim = 50 / 255 # 相似度阈值
if compare_image_color(image_path, colors, sim):
print('存在指定颜色')
else:
print('不存在指定颜色')
```
该示例代码使用Pillow库来处理图片,首先定义了一个计算两个颜色之间欧几里得距离的函数`compare_color`,然后定义了一个比较图片中是否存在指定颜色的函数`compare_image_color`。该函数接受三个参数,分别是图片路径、要比较的颜色列表和相似度阈值。函数会遍历图片中的每个像素点,将其与要比较的颜色进行比较,如果存在符合条件的颜色,则返回True,否则返回False。