2016-07-31 6 views
0

Voici mon code. Il continue à afficher ce message "La méthode getBufferedImage() est indéfinie pour le type opencv_core.IplImage". Comment puis-je m'en débarrasser? Existe-t-il un autre moyen d'obtenir l'image tamponnée ?? Si quelqu'un a une idée s'il vous plaît me dire le plus tôt possibleComment faire pour supprimer cette erreur "La méthode getBufferedImage() est indéfinie pour le type opencv_core.IplImage"

public IplImage snapIm = null; 
public Rectangle faceRect; 
public void paintComponent(Graphics g){ 
     super.paintComponent(g); 
     Graphics2D g2 = (Graphics2D) g; 

     if (snapIm != null) 
      g2.drawImage(snapIm.getBufferedImage(), 0, 0, this); //This Line is causing problem 

     drawRect(g2); 
     writeStats(g2); 
     writeName(g2); 
} 
public void recogFace(IplImage img) 
{ 
    BufferedImage clipIm = null; 
    synchronized(faceRect) { 
     if (faceRect.width == 0) { 
      System.out.println("No face selected"); 
      return; 
     } 
     clipIm = ImageUtils.clipToRectangle(img.getBufferedImage(),faceRect.x, faceRect.y, faceRect.width, faceRect.height); //This Line is causing problem 
    } 
    if (clipIm != null) 
    matchClip(clipIm); 
} 

Répondre

0

J'ai eu le même problème quand j'ai essayé de détecter la main. J'ai découvert que la nouvelle version d'openCV n'avait pas de méthode getBufferedImage() pour la classe org.bytedeco.opencv_core.IplImage. J'ai trouvé cette méthode qui a fait le travail pour moi.

public static BufferedImage IplImageToBufferedImage(IplImage src) { 
    OpenCVFrameConverter.ToIplImage grabberConverter = new OpenCVFrameConverter.ToIplImage(); 
    Java2DFrameConverter paintConverter = new Java2DFrameConverter(); 
    Frame frame = grabberConverter.convert(src); 
    return paintConverter.getBufferedImage(frame,1); 
} 

J'espère que cette méthode va vous aider à résoudre votre problème.