色と形の異なるイメージがあります。私はkmeansをクラスタリングしてから、2つの異なる画像を提供する必要があります。一つは形状が再生され、もう一つはLetterの色が再生されたものです。 ここにサンプルの元画像と私が達成する必要があるものがあります。 Original ImageKmeans、Opencv Pythonを使用したカラーセグメンテーション
Shape color regenerated と同様に、単に白R.
と他1私は望ましい結果を再生成するラベルとクラスタIDXにアクセスするにはどうすればよい、クラスタリングアルゴリズム関数kmeansを正常に実行していますか?誰かがサンプルコードで説明することができますか?ここにコードがあります。前もって感謝します。
import numpy as np
import cv2
img = cv2.imread("/home/manohar/Outputs/Targets/m-0.PNG",1)
cv2.imshow("original",img)
Z = img.reshape((-1,3))
# convert to np.float32
Z = np.float32(Z)
# Here we are applying k-means clustering so that the pixels around a colour are consistent and gave same BGR/HSV values
# define criteria, number of clusters(K) and apply kmeans()
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
# We are going to cluster with k = 2, because the image will have just two colours ,a white background and the colour of the patch
K = 3
attempts=10
ret,label,center=cv2.kmeans(Z,K,None,criteria,attempts,cv2.KMEANS_PP_CENTERS)
# Now convert back into uint8
#now we have to access the labels to regenerate the clustered image
center = np.uint8(center)
res = center[label.flatten()]
res2 = res.reshape((img.shape))
#res2 is the result of the frame which has undergone k-means clustering
cv2.imshow("res2",res2)
cv2.waitKey()
cv2.destroyAllWindows()
あなたの返信いただきありがとうございますが、これは私が達成したかったものではありません。シェイプと文字で画像を渡すときは、シェイプのみの場合と文字カラーの場合の2つの新しい画像を再生成したいと考えています。どのように私はこの卿をやるのですか? C++では、cluster_idxを使用します。これはPythonでどのように行うのですか? – Manohar
センターとラベルにアクセスする方法も質問されました。あなたはそれで何を意味するかを明確にしていただけますか?私が正しく理解していれば、検出されたオブジェクトが取り除かれた画像(形状を黒くすることで私の答えで既に説明したもの)*と*抽出されたオブジェクト(文字)のみを持つ画像も欲しいですか? – DarkCygnus
あなたのコメントに基づいて私の答えを編集しました – DarkCygnus