2013-05-18 2 views
0

이 코드를 실행했습니다. 당신이 showImage를 호출 할 때 result가 null의 경우,이미지 바느질 : NullPointerException

public class ImageStitching { 

    public static void main(String[] args){ 
     MatVector images = new MatVector(2); 
     images.put(0,cvLoadImage("sample1.png")); 
     images.put(1,cvLoadImage("sample2.png")); 

     IplImage result = new IplImage(null); 
     int status = stitcher.stitch(images,result); 

     if(status == stitcher.OK) 
     { 
      cvSaveImage("result.png", result); 
     } 

     result = cvLoadImage("result.png"); 

     final CanvasFrame canvas = new CanvasFrame("My Image", 1); 

     // Request closing of the application when the image window is closed. 
     canvas.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE); 

     // Show image on window. 
     canvas.showImage(result); 

     } 
} 

및 오류가 분명히

Exception in thread "main" java.lang.NullPointerException 
at com.googlecode.javacv.CanvasFrame.showImage(CanvasFrame.java:366) 
    at com.googlecode.javacv.CanvasFrame.showImage(CanvasFrame.java:363) 
    at ImageStitching.main(ImageStitching.java:50) 

java:50 is canvas.showImage(result); 
+0

스티 처 인스턴스를 어디에 만드십니까? – foundry

+0

죄송합니다. 여기 누락되었습니다 Stitcher stitcher = Stitcher.createDefault (false); 나는 그것을 main 메소드의 첫 번째 라인으로 포함시켰다. 미안하지만, 나는 그것을 여기 놓쳤다. 인스턴스가 있다면, 같은 에러가 난다. – user2294002

답변

0

이다 : 그 result.png 결과로 발생하지 않는 것 같습니다.

코드의 문제는 상태가 정상 (if (status == stitcher.OK))인지 테스트 한 다음 어쨌든 파일을로드하려고하는 것입니다. 코드는 다음과 같아야합니다.

if (status != stitcher.OK) 
{ 
    std::cout << "ERROR" << std::endl; 
    return 1; 
} 

그러면 문제는 스티칭에서 비롯된 것입니다.


또한, 당신은 그것을 표시하기 전에 파일에 result를 작성할 필요가 없습니다.

+0

오류가 있습니다. 거기에 오류가 있습니다. 오류가 무엇인지 잘 모릅니다. – user2294002

+0

"sample1.png"및 "sample2.png"이 성공적으로 열렸습니까? – JonesV

+0

예, 성공적으로 열었습니다 .. – user2294002