2015-03-26 1 views
1

J'essaie d'utiliser l'algorithme floodFill sur mon application android. Je clique sur un point pour sélectionner la graine. Ensuite, je lance l'algorithme de remplissage. Je veux montrer seulement zone sélectionnée même que la couleur des graines. Pour ce faire, j'affiche un objet masque. Mais il est noir à chaque fois, ça ne change pas. J'ai utilisé les drapeaux FLOODFILL_FIXED_RANGE et FLOODFILL_MASK_ONLY.Opencv - FloodFill ne change pas l'image du masque

Mon code est ici:

Imgproc.cvtColor(mRgba, temp, Imgproc.COLOR_RGBA2RGB); 
     Imgproc.cvtColor(temp, temp, Imgproc.COLOR_RGB2GRAY); 
     mMask = Mat.zeros(mMask.size(), CvType.CV_8UC1); 
     Imgproc.floodFill(temp, mMask, fpts.get(fpts.size()-1), new Scalar(255, 255, 255),new Rect(new Point(0,0), new Point(5,5)),new Scalar(30), new Scalar(30), Imgproc.FLOODFILL_FIXED_RANGE);  
     Core.circle(temp, fpts.get(fpts.size()-1), 7, new Scalar(255, 255, 255), RADIUS); 
     Mat temp3 = new Mat(temp.size(), mMask.type()); 
     temp3 = mMask.submat(new Rect(2, 2, mMask.width()-2, mMask.height()-2)) ; 

     Log.i(TAG, temp3.width() + "-" + temp3.height()+"**" + temp.width()+"-"+temp.height()); 
     ///Show me what you got from template matching 
     Core.rectangle(temp, matchLoc, new Point(matchLoc.x + mTemp.cols(), 
       matchLoc.y + mTemp.rows()), new Scalar(0, 255, 0)); 
     return temp3; 

Si je reviens temp, je peux montrer l'image d'entrée a changé.

Répondre

1

Vous devez définir la nouvelle valeur du masque dans les indicateurs Imgproc.floodFill. Pour changer le masque en blanc (255):

int flags = 4 + (255 << 8) + Imgproc.FLOODFILL_FIXED_RANGE;