怪物奇妙物语

宇宙无敌超级美少男的怪物奇妙物语

首页 新随笔 联系 管理
  819 随笔 :: 0 文章 :: 2 评论 :: 16万 阅读

opencv计算图片中出现面积最大最经常出现的颜色

  1. opencv
  2. K均值聚类算法
  3. 颜色相似性,欧几里得距离越小,颜色越相似
import math
import cv2
import numpy as np
from sklearn.cluster import KMeans
def find_dominant_color(image, k=2):
# 将图像数据转换为一维数组
image = image.reshape((image.shape[0] * image.shape[1], 3))
# 使用K均值聚类算法对颜色进行聚类
kmeans = KMeans(n_clusters=k,n_init=10)
kmeans.fit(image)
# 获取每个簇的像素数量
counts = np.bincount(kmeans.labels_)
# 返回数量最多的簇的中心点,即最常见的颜色
return kmeans.cluster_centers_[np.argmax(counts)]
def compute_color_similarity(color1,color2):
distance = math.sqrt(sum((c1-c2)**2 for c1, c2 in zip(color1, color2)))
return distance
def show_most_common_color(dominant_color):
# 创建一个新的图像,所有像素都设置为给定的BGR颜色值
image = np.zeros((300, 300, 3), np.uint8)
image[:] = dominant_color
# 显示图像
cv2.imshow('Image', image)
cv2.waitKey(0)
if __name__ == '__main__':
# 读取图像
image = cv2.imread('test1.jpg')
# 查找图像中最常见的颜色
dominant_color = find_dominant_color(image)
# 展示一下,最常见的颜色
show_most_common_color(dominant_color)
# 输出结果
common_color = dominant_color[::-1]
print("Dominant color rgb:",common_color )
# 计算两个颜色的相似性
# base_color2 = [186, 113, 125]
base_color = [69, 123, 209]
similarity = compute_color_similarity(common_color,base_color)
print("similarity = :",similarity)
posted on   超级无敌美少男战士  阅读(187)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示