2013-04-05 15 views
3

說我在這裏使用了錯誤的類型。 img和圖像都是iplImages,我應該使用哪種類型,以及如何使用它?由於cvResize函數與JavaCV

    IplImage image = IplImage.create(120, 120, IPL_DEPTH_8U, 4); 
        //resize the image 
        cvResize(img,image); 

        cvSaveImage("4-rjb" + capture + ".pgm", img); 

回答

1

你應該使用相同數量的通道作爲源圖像中

1

更換img.nChannels)IPL_DEPTH_8U參數(

2

這應該工作

IplImage resizeImage = IplImage.create(120, 120, origImg.depth(), origImg.nChannels()); 

和這裏是一個完整的例子

OpenCVFrameGrabber frameGrabber = new OpenCVFrameGrabber(video_in); 
try { 
    frameGrabber.start(); 
    IplImage origImg = frameGrabber.grab(); 
    IplImage resizedImage = IplImage.create(IMG_WIDTH, IMG_HEIGHT, origImg.depth(), origImg.nChannels()); 

    //cvSmooth(origImg, origImg); 
    cvResize(origImg, resizedImage); 
    cvSaveImage(image_out.getAbsolutePath(),resizedImage); 
    cvReleaseImage(resizedImage); 

} catch (OpenCVFrameGrabber.Exception e) { 
    e.printStackTrace(); 
    throw new NullPointerException("fileExtension"); 
}