3

Cimg lib を使用して画像処理作業を行っています。GPU から返された配列のポインターがあり、Cimg オブジェクトで配列の値を直接取得したいと考えています。現在、for ループを使用して作業を行っていますが、あまり効率的ではありません。

私が現在使用しているサンプルコードは次のとおりです。

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include "CImg.h"

using namespace std;
using namespace cimg_library;

int main(){
    char pause;
    int width=3; int height=3;//Dimension of the Cimg matrix
    int size = width * height * sizeof(int); // number of bytes in total in arrays
    int *ptr = (int*) malloc(size);

    //Assign the array some example value; 
    for (int m=0;m<width*height;m++){
        *(ptr+m)=m;
    }

    CImg<int> img(width,height,1,1);

    //This is how I assign the value of the array to the Cimg object
    for (int i=0;i<width;i++)
        for (int j=0;j<height;j++)
        {
            img.atXY(i,j)=*(ptr+j*width+i);
        }

        img.save_bmp("img.bmp");
        cout<<"Pause:";
        cin>>pause;
    }
}

このコードは疲れましたが、機能しません:

img.begin()=ptr;

for ループをなくして速度を向上させるのを手伝ってくれる人はいますか? よろしくお願いします。

4

4 に答える 4

0

最後に、opencv に切り替えることにしました。このようにして、ポインタを画像マットに簡単に割り当てて、画像に格納することができます。

私はまだcimgの解決策を探しています。cimg のポインターを変更できないのは、少し奇妙に思えます。

于 2013-11-15T19:20:14.310 に答える