이미지에서 색상 추출하기
7233 단어 kmeansOpenCV-Python
말레이시아의 국기를 사용하다.색상의 비율을 눈으로 판단할 때는 빨간색, 흰색, 청색, 노란색 순으로 판단한다.
코드 이미지
이미지는 픽셀로 구성됩니다.그리고 픽셀마다 색상(RGB)의 정보가 있습니다.
다음은 말레이시아 국기의 일부분이다.픽셀 수는 50x50입니다.
이러한 픽셀의 색상은 RGB 공간에서 다음과 같습니다.
RGB 공간에서 kmeans라는 컬렉션 기법을 사용하여 색상의 비율을 내보냅니다.
코드
colorextract.py
import cv2
import matplotlib.colors as cs
import matplotlib.pyplot as plt
import numpy as np
from sklearn.cluster import KMeans
#set path to image
imgpath = 'malaysiaflag.png'
#set number of cluster for kmeans
clusterno = 3
#read image
img = cv2.imread(imgpath)
#convert bgr to rgb
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#reshape img array
n_img = np.reshape(img,(img.shape[0]*img.shape[1],3))
#use kmeans to find cluster of color
clt = KMeans(n_clusters=clusterno)
clt.fit(n_img)
#get unique value of labels in kmeans
labels = np.unique(clt.labels_)
#find the pixel numbers of each color that is set by cluster number
hist,_ = np.histogram(clt.labels_,bins=np.arange(len(labels)+1))
#declare list to hold color to be used in chart
colors = []
#declare list to hold hex color code for labeling in chart
hexlabels = []
#get the main color
for i in range(clt.cluster_centers_.shape[0]):
colors.append(tuple(clt.cluster_centers_[i]/255))
hexlabels.append(cs.to_hex(tuple(clt.cluster_centers_[i]/255)))
#create pie chart for color
plt.pie(hist,labels=hexlabels,colors=colors,autopct='%1.1f%%')
plt.axis('equal')
plt.show()
실행 결과• 클러스터 수(clusterno)가 3으로 지정된 경우
• 클러스터 수(clusterno)가 4로 지정된 경우
Reference
이 문제에 관하여(이미지에서 색상 추출하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sabewe/items/2cbcee4ce9c8d61f2d1e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)