Python 是否有可能从直方图中找到图像的平均颜色?
我把每种颜色的平均值记下来,然后把红色、绿色和蓝色的平均值写入数据库 按“-蓝色”排序。正如你所看到的,第5张图片中蓝色最多。是我做错了什么,还是无法从直方图中获得平均颜色 这是我创建直方图的处理程序: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
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或色调排序时,具有相似颜色的图像没有分组在一起。