2010-11-19 16 views

cevap

4

En kolay yol, at templated method kullanarak arabelleğin öğeleri üzerinde döngü yapmaktır.

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

Elbette, doğru türü ile matris başlatmak ve yukarıda yapmadım renk biçimini ayarlamak gerekir. OpenCV matrix nesnesi here hakkında daha fazla bilgi edinin.

2

IplImage değişken bir imageData'ya sahiptir. Bu sadece bir tampon. Bu nedenle, imageData buffer ile aynı biçime sahipse dizinizi kopyalayabilirsiniz. Biçim farklıysa, kopyalayabilirsiniz, ancak IplImage'inizin diğer değişkenlerini düzgün bir şekilde doldurmanız gerekecektir.