Python 是否有可能从直方图中找到图像的平均颜色?

Python 是否有可能从直方图中找到图像的平均颜色?,python,image,colors,histogram,Python,Image,Colors,Histogram,我把每种颜色的平均值记下来,然后把红色、绿色和蓝色的平均值写入数据库 按“-蓝色”排序。正如你所看到的,第5张图片中蓝色最多。是我做错了什么,还是无法从直方图中获得平均颜色 这是我创建直方图的处理程序: class ImageSave(webapp.RequestHandler): def post(self): homepage = HomePage() original_image = self.request.get("img") u

我把每种颜色的平均值记下来,然后把红色、绿色和蓝色的平均值写入数据库

按“-蓝色”排序。正如你所看到的,第5张图片中蓝色最多。是我做错了什么,还是无法从直方图中获得平均颜色

这是我创建直方图的处理程序:

class ImageSave(webapp.RequestHandler):
    def post(self):
        homepage = HomePage()
        original_image = self.request.get("img")
        url = self.request.get("url")
        firm_name = self.request.get("firm_name")

        original_image = db.Blob(original_image)
        thumbnail = images.resize(original_image, 250, 250)
        img = images.Image(thumbnail)
        hist = img.histogram()
        rgb_weighed_average = hist_weighed_average(hist)

        #update database
        homepage.original_image = original_image            
        homepage.thumbnail = thumbnail
        homepage.firm_name = firm_name
        homepage.url = url

        homepage.red = rgb_weighed_average[0]
        homepage.green = rgb_weighed_average[1]
        homepage.blue = rgb_weighed_average[2]

        homepage.put()

        self.redirect("/imageupload")

谢谢

实际上,第五张图片的蓝色并不多。请注意,白色与rgb一样是
(255,255,255)
,因此完全白色的图像的蓝色与完全蓝色的图像的蓝色一样多。深蓝色的
蓝色
成分比白色小。

omz:谢谢!那么,有没有一种方法可以将相似的颜色组织在一起,从最白的到最蓝的或最暗的?我应该使用另一种方法吗?也许你可以计算平均颜色的色调(搜索rgb到hsv/hsl的转换)并基于此进行排序。omz:按色调排序也不起作用。视觉上看起来最蓝的图像排序在最白的图像旁边;就像你在评论中说的那样。有没有办法找到图像的视觉主导色?再次感谢。我认为单凭直方图是不可能的。omz:是的,看起来是这样。我在这里输入了各种排序顺序:
http://ting-1.appspot.com/displayimage
正如您所见,颜色分组不好。有什么建议吗?你需要一个亮度和饱和度分开的颜色空间()。然后找到每个像素色调分量的主要值。Paolo Moretti:我使用Python的colorsys获得色调:
hue=colorsys.rgb_to_hls(r,g,b)[0]
并按色调排序,但类似颜色的静止图像不会分组。这与App Engine没有任何关系,不是吗?另外,您询问的是直方图和图像处理,但没有包括任何图像处理代码。@Nick Johnson:我删除了GAE标记。代码包括如何计算直方图和平均值,但不幸的是,当我按rgb或色调排序时,具有相似颜色的图像没有分组在一起。