2012-12-04 20 views
10

OpenCV mat etmek:dönüştürme vektörü aşağıdaki kodu kullanarak dönüşüm matris vektör gerçekleştirmek için OpenCV 2.4.3 kullanıyorum

struct Component 
{ 
    cv::Rect box; 
    double area; 
    double circularity; 
} 

int main (...) 
{ 
    cv::vector <Component> components;   
    cv::Mat componentMat (components, true); 
    std::cout << componentMat; 
    return 0; 
} 

Ama söyleyerek, bir hata verir:

OpenCV Error: Unsupported format or combination of formats() in unknown function, file ...\opencv\modules\core\src\out.cpp, line 111 

Burada neyi yanlış yapıyorum? Bu vektörü matris formuna dönüştürmek için başka bir yöntem var mı? Teşekkür ederim.

+0

Bu soru üzerine, bu dönüşümü neden yapmanız gerektiğini merak ediyorsanız, opencv'de bir matris oluşturabilir ve bu yardımcı olursa vektör olarak ele alabilirsiniz. ama bir matris oluşturmanın ve onu bir matrise dönüştürmek istediğinizin bir nedeni olduğunu varsayalım. –

+0

niçin ihtiyaç duyduğunuza dair bir senaryo sunabilir miyim, aslında buradaki sorgumda elimden gelen başka bir işlev için kullanıyorum. –

+0

Ben bu cuz belki de bu etrafında bir yol var soracağım, şu anda burada cevaptan başka bir yol göremiyorum, yani bir matris olarak bir vektör işlemek, bu durumda bir nx1 matrisi olacak. hangi fonksiyonun vektörü hangi çıktılar ve hangi fonksiyonun matrisi girdi olarak kullandığını söyleyebilir misiniz? –

cevap

16

onlar vektör türleri desteklenir hangi demek ki Mat yapıcı bir başvuru var:

"yapıcı yani düzgün beyan VeriTürü var olduğu için keyfi türlerini, işleyebilir vektör öğeleri ilkel sayılar veya numaralı tek tip sayısal numaralar olmalıdır Karışık tür yapıları desteklenmez, ".

Yani kullandığınız tip desteklenmez ve bu nedenle bir hata alıyorum.

3

"Bileşenler" tipi Matrix oluşturmaya çalışıyorsunuz. Bu işe yaramazdı. Mat, yalnızca Point2d, Point3d gibi belirli veri tiplerini destekler. Eğer onlarla denerseniz, işe yarayacaktır. the documentation yılında

İlgili konular