2011-01-07 70 views
2

我正在用OpenCV編程一些圖像轉換代碼,我不知道如何創建圖像內存緩衝區來在每次迭代中加載圖像。我有迭代次數(maxImNumber),我有一個輸入圖像。在每個循環中,程序都必須創建被調整大小和修改後的輸入圖像的圖像。這是一些基本的代碼(概念)。使用OpenCV在循環中創建新圖像

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); 
} 

有人可以請解釋我該如何創建這個圖像緩衝區(圖像[])併爲它分配內存。我怎樣才能訪問這個緩衝區中的任何圖像?

非常感謝您提前!

+2

開始使用OpenCV的C++ API! – ypnos 2011-01-07 15:52:15

回答

2

images只是一個的IplImage指針數組所以下面應該工作:在每次循環

IplImage** images = (IplImage**) malloc(sizeof(IplImage*)*maxImNumber)

1

或更好的矢量圖像... 然後images.pushback(newImage)

0

使用std::vector<IplImage*> images(maxImNumber)
迭代一次以分配所有圖像,例如, cvCreateImage()cvCloneimage()
當你完成它迭代器再次和cvReleaseImage()所有的圖像。