2012-11-06 24 views
5

opencv için ama oldukça bir cv .data kısmı :: Matişaretsiz char ** neredeyse bitiriyorum mat

* UCHAR olduğunu biliyoruz

unsigned char ** to a cv::Mat 

dönüştürmek anlayamıyorum

Ben ... şeklinde

unsigned char ** output; 

bir döndüren fonksiyonu ve görüntüyü kullanıyorum Ama kodun kalan cv :: Mat adlı kullanır. Kullandığım lib için kaynak yok, o yüzden ne yaptığını bilmiyorum. Yardım çocuklar için

Düzenleme Teşekkürler, ben de yaptım ...

cv::Mat TempMat = cv::Mat(h, w, CV_8UC1, *output); 
imshow("this is a test",TempMat); 

ama görüntü yüzden şimdi orada ya da değil aslında bir şey varsa öğrenmek gerekir siyahtır.

Araştırma eksikliği için özür dilerim Sıkı bir son teslim tarihindeyim, ev ödevi yok, sonuçları bir Profesöre göstermeye hazır bir şeyler almaya çalışıyordum!

+2

Eğer dönüyor çift pointer genişliği ve yüksekliği biliyor musunuz? – sgarizvi

cevap

8

Sen veri işaretçisi ile Mat constructor kullanmak zorunda:

// constructor for matrix headers pointing to user-allocated data 
    Mat(int _rows, int _cols, int _type, void* _data, size_t _step=AUTO_STEP); 
    Mat(Size _size, int _type, void* _data, size_t _step=AUTO_STEP); 

Sen void**void* ve bu kullandıktan sonra dönüştürmek zorundayız.

+0

Teşekkürler, bunu yapmaya devam ettim. Sonraki sorun için düzenleme konusuna bakın – Oliver9523

+1

@ Oliver9523 Giriş verilerinin biçimi nedir (void ** ')? Eğer iki boyutlu görüntü verisi dizisine bir işaretçi ise, onu tek boyutlu olarak dönüştürmeniz gerekir. – ArtemStorozhuk

+0

2d dizi olduğunu varsayalım, teşekkürler. Dönüştürmeye bakacağım. Astor yorumu için – Oliver9523

0

belki, bunun gibi

cv::Mat TempMat = cv::Mat(h, w, CV_8UC1, *output); 

de * yapmak kaldırması gerekir:

cv::Mat TempMat = cv::Mat(h, w, CV_8UC1, output);