2013-12-12 25 views
6

Ben android opencv üzerinde çalışıyorum ve Hue kanalı aracılığıyla göz göz bebeği rengini değiştirmek istiyorum ve bunu zaten başardım ama sorun saptadığım bölgenin dikdörtgendir ama ben bunu istiyorum Göz göz bebeği olarak dairesel bölge dairesel bölge. Bunu nasıl başardığıma yardım edin.opencv içinde dairesel olarak gözbebeği nasıl tespit edilir

private Mat get_template(CascadeClassifier clasificator, Rect area,int size){ 
    Mat template = new Mat(); 
    Mat mROI = mGray.submat(area); 
    MatOfRect eyes = new MatOfRect(); 
    Point iris = new Point(); 
    Rect eye_template = new Rect(); 
    clasificator.detectMultiScale(mROI, eyes, 1.15, 2,Objdetect.CASCADE_FIND_BIGGEST_OBJECT|Objdetect.CASCADE_SCALE_IMAGE, new Size(30,30),new Size()); 


    Rect[] eyesArray = eyes.toArray(); 
    for (int i = 0; i < eyesArray.length; i++){ 
     Rect e = eyesArray[i]; 
     e.x = area.x + e.x; 
     e.y = area.y + e.y; 
     Rect eye_only_rectangle = new Rect((int)e.tl().x,(int)(e.tl().y + e.height*0.4),(int)e.width,(int)(e.height*0.6)); 
     mROI = mGray.submat(eye_only_rectangle); 
     Mat vyrez = mRgba.submat(eye_only_rectangle); 
     Core.MinMaxLocResult mmG = Core.minMaxLoc(mROI); 

     Core.circle(vyrez, mmG.minLoc,2, new Scalar(255, 255, 255, 255),2); 
     iris.x = mmG.minLoc.x + eye_only_rectangle.x; 
     iris.y = mmG.minLoc.y + eye_only_rectangle.y; 
     eye_template = new Rect((int)iris.x-size/2,(int)iris.y-size/2 ,size,size); 
     Core.rectangle(mRgba,eye_template.tl(),eye_template.br(),new Scalar(255, 0, 0, 255), 2); 
     template = (mGray.submat(eye_template)).clone(); 
     return template; 
    } 
    return template; 
    } 
+0

ru öğrenci tespit neden i umerk44 eğer @ gözün – umerk44

+0

söz düşünmek Göz kodun var, lütfen bu kodu paylaşabilirsiniz. Eğer kodu verirsem –

+0

. o zaman nerede rol alacaksın? : P – umerk44

cevap

3

Bazı potansiyel çözümleri:

  • en basit, teğet çemberini (dikdörtgen bağlı daire) hesaplamak ve değiştirmektir çok sağlam olmayabilir rağmen rengi yüzünden - senin öğrencin eğer Algılama çok doğru bu çözüm işe yarayabilir.

  • daha sağlam bir çözelti rengi ya da gradyan (kenar algılama) göre gözbebeğinin alan tespit olacaktır

+0

teşekkürler çok. Ne dediğinizi anlıyorum ama kenar saptama ile ilgili bazı kod örneklerini paylaşır mısınız, göz bebeğinin kenarını nasıl tespit edebilirim? –

+0

İlgili kodum yok. ama açık cv uygulanan bazı algoritmalara sahiptir. –

İlgili konular