加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在Python中按颜色搜索图像

发布时间:2020-12-20 13:44:54 所属栏目:Python 来源:网络整理
导读:我们有一个包含超过250,000张图像的数据库,我们希望按颜色搜索这些图像 – 类似于Google的颜色搜索方式.因此,我们定义了12种不同的颜色:从黑色到红色,绿色和蓝色到白??色.如果用户选择例如红色,我们想要返回包含明显“红色部分”的所有图像. “红色艺术”是
我们有一个包含超过250,000张图像的数据库,我们希望按颜色搜索这些图像 – 类似于Google的颜色搜索方式.因此,我们定义了12种不同的颜色:从黑色到红色,绿色和蓝色到白??色.如果用户选择例如红色,我们想要返回包含明显“红色部分”的所有图像. “红色艺术”是指任何颜色范围,从深红色到略微紫色.

计划是拍摄一张图像,将其缩小到64×64像素并使用所有像素的HSL值.这就是我们计算不同颜色范围的方法:

from PIL import Image
import colorsys

image = Image.open('test.jpg').convert('RGBA').resize((64,64),Image.ANTIALIAS)
red,orange,yellow,green,turquoise,blue,lilac,pink,white,gray,black,brown = 0,0
for px in image.getdata():
    h,s,l = colorsys.rgb_to_hsv(px[0]/255.,px[1]/255.,px[2]/255.)
    h = h * 360
    s = s * 100
    l = l * 100

    if l > 95:
        white += 1
    elif l < 8:
        black += 1
    elif s < 8:
        gray += 1
    elif h < 12 or h > 349:
        red += 1
    elif h > 11 and h < 35:
        if s > 70:
            orange += 1
        else:
            brown += 1
    elif h > 34 and h < 65:
        yellow += 1
    elif h > 64 and h < 150:
        green += 1
    elif h > 149 and h < 200:
        turquoise += 1
    elif h > 195 and h < 250:
        blue += 1
    elif h > 245 and h < 275:
        lilac += 1
    elif h > 274 and h < 350:
        pink += 1

print 'White:',white
print 'Black:',black
print 'Gray:',gray
print 'Red:',red
print 'Orange:',orange
print 'Brown:',brown
print 'Yellow:',yellow
print 'Green:',green
print 'Turquoise:',turquoise
print 'Blue:',blue
print 'Lilac:',lilac
print 'Pink:',pink

它与一些图像的效果相当不错,并且与其他图像相差无几.问题是:感知的颜色不仅取决于色调值,还取决于亮度和饱和度.例如.对于较低的饱和度/亮度值,我们对黄色的定义完全失败 – >它只是变成绿褐色,与黄色无关.但这只是一个特例;棕色使我们成为橙色的一种低调的颜色……从整体看来,这个系统似乎变得非常复杂.

我想我在这里做错了.尝试使用RGB值也失败了.试图用直方图找出更好的方法,但由于愚蠢或某事而失败了……

橙色,红色,蓝色等也可以是布尔…我们可以在我们的数据库中使用任何东西来检索搜索结果……我正在尝试使用本机Python库Pillow并且不想使用scipy或numpy或者任何其他第三方应用程序,除非确实有必要.我看了很多类似的SO问题,但没有一个有帮助.我发现这个问题的大多数答案都没有有用的示例代码.

救命!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读