我正在尝试在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
我只想重新塑造一个二维图像,为什么会发生错误的通道错误?
答案 0 :(得分:2)
通过一些谷歌搜索,我发现你的输出矩阵必须包含至少3个通道。 (蓝色,绿色和红色)。蓝色和绿色将完全为空,并且您将灰度图像设置为输出图像的红色通道。任何其他数量的频道都会导致您收到的错误。