2016-07-31 31 views
0

Hier ist mein Code. Es zeigt weiterhin diese Nachricht an "Die Methode getBufferedImage() ist für den Typ opencv_core.IplImage nicht definiert". Wie kann ich es loswerden? Gibt es eine alternative Möglichkeit, das gepufferte Bild zu erhalten? Wenn jemand eine Idee haben, bitte sagen Sie mir so bald wie möglichSo entfernen Sie diesen Fehler "Die Methode getBufferedImage() ist für den Typ opencv_core.IplImage undefined"

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); 
} 

Antwort

0

ich auch das gleiche Problem hatte, als ich versuchte, Hand zu erkennen. Ich fand heraus, dass die neue openCV-Version keine Methode getBufferedImage() für die org.bytedeco.opencv_core.IplImage-Klasse hatte. Ich habe diese Methode gefunden, die die Arbeit für mich erledigt hat.

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); 
} 

Ich hoffe, dass diese Methode Ihnen helfen wird, Ihr Problem zu lösen.