Problemi çözdüm! Bahşiş için ana konuya teşekkürler.
Kmeans algoritmasının ilk parametresinin hangi değere ihtiyaç duyduğunu anlamıyorum.
Bu Tutorial ile sorunu analiz ettim ve doğru yolu buldum.
Imgproc.findContours(bw.clone(), contours, hierarchy, Imgproc.RETR_TREE, Imgproc.CHAIN_APPROX_SIMPLE);
Mat samples32final = new Mat(contours.size(), 2, CvType.CV_32F, new Scalar(0));
for (int j = 0 ; j<contours.size(); j++) {
Mat samples32f = new Mat((int) contours.get(j).size().height, 2, CvType.CV_32F, new Scalar(0));
for (int i = 0; i < (int) contours.get(j).size().height; i++) {
samples32f.put(i, 0, contours.get(j).get(i, 0)[0]);
samples32f.put(i, 1, contours.get(j).get(i, 0)[1]);
}
samples32f.reshape((int) contours.get(j).size().height, 2);
Mat labels = new Mat((int) contours.get(j).size().height, 2, CvType.CV_32SC1);
TermCriteria criteria = new TermCriteria(TermCriteria.EPS + TermCriteria.MAX_ITER, 100, 1.0);
Mat centers = new Mat();
Core.kmeans(samples32f, 1, labels, criteria, 10, Core.KMEANS_RANDOM_CENTERS, centers);
samples32final.put(j,0,centers.get(0,0)[0]);
samples32final.put(j,1,centers.get(0,1)[0]);
}
samples32final.reshape(contours.size(), 2);
Mat labels = new Mat(contours.size(), 2, CvType.CV_32SC1);
TermCriteria criteria = new TermCriteria(TermCriteria.EPS + TermCriteria.MAX_ITER, 100, 1.0);
Mat centers = new Mat();
Core.kmeans(samples32final, 5, labels, criteria, 10, Core.KMEANS_PP_CENTERS, centers);
İlk satırda görüntünün konturları bulundu. İlk döngüde, küme boyutu 1 olan her bir pipün merkezini bulur ve merkezini yeni bir Mat'ta depolar. For döngüsünden sonra tüm piplerin merkez pozisyonu değişken numunelerde32finalde saklanır. Bu değişken ile zarın ortası kmeans ile bulunabilir.
Kötü ingilizce için özür dilerim ...
Peki, o zaman kümelemek istiyor musunuz? Sadece kilometrelerce keyfi uzunluk eğrilerini vermezsiniz, ancak sabit boyut özelliği vektörleri. "Özellik çıkarma" için özel bir fikriniz yoksa, işte burada bir ipucu: affine-invariant fourier descriptors. – mainactual
Cevabınız için teşekkür ederiz. Ben 5 dices pipleri kümelemek istiyorum. –
Belki de, istediğiniz sonucu eklediğiniz bir örnek resim gönderirsiniz? – mainactual