我正在使用OpenCV编写一些图像转换代码,我不知道如何在每次迭代时创建图像内存缓冲区来加载图像。我有迭代次数(maxImNumber),我有一个输入图像。在每个循环程序中,必须创建调整大小和修改输入图像的图像。这是一些基本代码(概念)。
for (int imageIndex = 0; imageIndex < maxImNumber; imageIndex++){
cvCopy(inputImage, images[imageIndex], 0);
cvReleaseImage(&inputImage);
images[imageIndex+1] = cvCreateImage(cvSize((image[imageIndex]->width)/2, image[imageIndex]->height), IPL_DEPTH_8U, 1);
for (i=1; i < image[imageIndex]->height; i++) {
index = 0; //
for(j=0; j < image[imageIndex]->width ; j=j+2){
// doing some basic matematical operation on image content and store it to new image
images[imageIndex+1][i][index] = (image[imageIndex][i][j] + image[imageIndex][i][j+2])/2;
index++
}
}
inputImage = cvCreateImage(cvSize((image[imageIndex+1]->width), image[imageIndex]->height), IPL_DEPTH_8U, 1);
cvCopy(images[imageIndex+1], inputImage, 0);
}
请有人解释如何创建此图像缓冲区(images [])并为其分配内存。另外如何访问此缓冲区中的任何图像?
非常感谢你!
答案 0 :(得分:2)
images
只是一个IplImage
指针数组,因此以下内容应该有效:
IplImage** images = (IplImage**) malloc(sizeof(IplImage*)*maxImNumber)
答案 1 :(得分:1)
或更好的矢量图像...... 然后在每个循环上的images.pushback(newImage)
答案 2 :(得分:0)
使用std::vector<IplImage*> images(maxImNumber)
迭代一次以使用例如分配所有图像。 cvCreateImage()
或cvCloneimage()
当你完成它后再次迭代它并cvReleaseImage()
所有图像。