能否通过直方图找出图像的平均颜色?

3 投票
1 回答
2583 浏览
提问于 2025-04-17 03:13

我通过这种方法计算了每种颜色的平均值,然后把红色、绿色和蓝色的平均值写入了数据库。

这里是按“-蓝色”排序的图片。你可以看到,第五张图片的蓝色最多。我是不是做错了什么,还是说从直方图中获取平均颜色是不可能的?

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

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")

谢谢!

1 个回答

5

其实,第五张图片并不是蓝色最多的。要注意,白色在rgb颜色模式下是(255, 255, 255),所以一张完全白的图片和一张完全蓝的图片蓝色成分是一样的。深蓝色的蓝色成分比白色要少。

撰写回答