使用PIL(Python)在jpeg图像中查找RGB的给定值?

时间:2017-04-20 12:37:05

标签: python numpy python-imaging-library scikit-image

现在我使用PIL读取jpeg图像,获取RGB的值。

虽然我可以组合所有RGB,然后找到等于rgb给定值的宽度和高度。

有没有更有效的方法或功能实现这一目标?

Weather Radar Maps of USA

我的最终目标是在此图片上获取dBZ的数据,包括纬度和经度信息。

首先,我需要让图像中的坐标等于给定的RGB。

1 个答案:

答案 0 :(得分:0)

使用NumPy argwhere是实现目标的简单方法。例如,您可以获得RGB值为[105, 171, 192]的像素的空间坐标,如下所示:

In [118]: from skimage import io

In [119]: import numpy as np

In [120]: img = io.imread('https://i.stack.imgur.com/EuHas.png')

In [121]: ref = [105, 171, 192] 

In [122]: indices = np.argwhere(np.all(img == ref, axis=-1))

In [123]: indices
Out[123]: 
array([[ 71, 577],
       [ 79, 376],
       [ 79, 386],
       [ 95, 404]], dtype=int64)

以下代码段显示上述结果是正确的:

import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(1, 2)

ax1.imshow(img)
ax1.set_title('Original map')
ax1.set_axis_off()

ax2.imshow(img)
ax2.set_title('Pixels with RGB = ' + str(ref))
for y, x in indices:
    ax2.add_artist(plt.Circle((x, y), 8, color='r'))

Pixels highlighted