2010-11-19 5 views

Antwort

4

Der einfachste Weg besteht darin, die Elemente des Puffers mit der at templated method zu durchlaufen.

unsigned char buffer[] = {1, 2, 3, ..., 18}; // RGBRGB... 
cv::Mat image(2, 3); 
for (int i = 0; i < 18; ++i) { 
    int row = i/9; 
    int col = (i/3)%3; 
    int rgb = i%3; // An index 
    image.at<unsigned char>(row,col+rgb) = buffer[i]; 
} 

Natürlich müssen Sie Ihre Matrix mit dem richtigen Typ initialisieren, und legen Sie das Farbformat, das ich nicht über getan haben. Sehen Sie mehr über das OpenCV-Matrixobjekt .

2

IplImage hat eine variable imageData. Es ist nur ein Puffer. So können Sie Ihr Array einfach kopieren, wenn es das gleiche Format wie imageData Buffer hat. Wenn das Format unterschiedlich ist, können Sie kopieren, aber Sie müssen andere Variablen Ihres IplImage korrekt ausfüllen.