2016-07-31 10 views
0

Вот мой код. Он продолжает показывать это сообщение: «Метод getBufferedImage() не определен для типа opencv_core.IplImage». Как я могу избавиться от него? Есть ли альтернативный способ получения буферизованного изображения? Если кто-нибудь есть идеи, пожалуйста, скажите мне, как можно скорееКак удалить эту ошибку «Метод getBufferedImage() не определен для типа 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); 
} 

ответ

0

Я также была та же самая проблема, когда я пытался обнаружить руку. Я узнал, что новая версия openCV не имеет метода getBufferedImage() для класса org.bytedeco.opencv_core.IplImage. Я нашел этот метод, который сделал для меня работу.

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

Я надеюсь, что этот метод поможет вам решить вашу проблему.