在javacv中重塑IplImage

时间:2014-01-17 12:32:46

标签: java javacv reshape

我正在尝试在javacv中调整IplImage图像的大小。我找到了做这种事情的cvResize函数。我的工作流程是:打开图像将其转换为gray_scale,将其调整为所需大小,最后重新整形。我已经读过它将它转换为gray_scale并调整它的大小。最后一步,重塑我的问题是什么?我有cvReshape,它做我想要的。我有一个IplImage,我必须将它转换为cvMat。下一步是重塑,它需要4个参数,一个cvArr和一个cvMat以及所需的尺寸。

    // read an image
    final IplImage image = cvLoadImage("ef.jpg");
    //create image window named "My Image"
    final CanvasFrame canvas = new CanvasFrame("My Image");
    // 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(image);

    IplImage GrayImage = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1);     
    cvCvtColor(image, GrayImage, CV_BGR2GRAY);

    IplImage img = IplImage.create(60, 60, IPL_DEPTH_8U, 1);
    //resize the image
    cvResize(GrayImage, img, CV_INTER_LINEAR); 
    cvSaveImage("4-rjb" + ".jpg", img);
    //cvReleaseImage(result1);

    System.out.println("The size of the image: "+img);
    CvMat mtx = CvMat.createHeader(img.height(), img.width());

    cvGetMat(img, mtx, null, 0);
    System.out.println(mtx);

    cvReshape(img, mtx, 3600, 1);

我收到错误:

   OpenCV Error: Bad number of channels () in unknown function, file .\src\array.cpp,  
   line 2721

我只想重新塑造一个二维图像,为什么会发生错误的通道错误?

1 个答案:

答案 0 :(得分:2)

通过一些谷歌搜索,我发现你的输出矩阵必须包含至少3个通道。 (蓝色,绿色和红色)。蓝色和绿色将完全为空,并且您将灰度图像设置为输出图像的红色通道。任何其他数量的频道都会导致您收到的错误。