在javacv中重塑IplImage
我正在尝试在javacv中调整IplImage图像的大小。我发现cvResize函数可以做这样的事情。我的工作流程是:打开图像,将其转换为灰度,将其调整为所需大小,最后对其进行重塑。我已经读过了,将其转换为灰度并调整大小。我的问题是什么?最后一步,重塑。我有一个CVREFORMATE,它符合我的要求。我有一个IplImage,我必须把它转换成cvMat。下一步是重塑,需要4个参数、一个cvArr和一个cvMat以及所需的尺寸在javacv中重塑IplImage,java,javacv,reshape,Java,Javacv,Reshape,我正在尝试在javacv中调整IplImage图像的大小。我发现cvResize函数可以做这样的事情。我的工作流程是:打开图像,将其转换为灰度,将其调整为所需大小,最后对其进行重塑。我已经读过了,将其转换为灰度并调整大小。我的问题是什么?最后一步,重塑。我有一个CVREFORMATE,它符合我的要求。我有一个IplImage,我必须把它转换成cvMat。下一步是重塑,需要4个参数、一个cvArr和一个cvMat以及所需的尺寸 // read an image final IplI
// 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
我只想重塑2d图像,为什么会出现通道数错误???通过一些谷歌搜索,我发现您的输出矩阵必须至少包含3个通道。(蓝色、绿色和红色)。其中蓝色和绿色将完全为空,您将灰度图像作为输出图像的红色通道。任何其他数量的通道都会导致出现错误。是的,因此我的解决方案是创建ny自己的重塑:)!