2016-03-24 22 views
0

25 satırlık Mat'ı ve 1 sütunu (dolayısıyla 25 veri değerine sahibiz) 5 satırlık Mat'a ve 5 sütun halinde yeniden şekillendirmek için OpenCV yeniden şekillendirme işlevini kullanıyorum.OpenCV yeniden şekillendirme işlevi düzgün çalışmıyor

data = mu.reshape(5, 5); 

Ben ayıklayıcısında verilerim değişkene bakılır, bu 5 satır ancak 1 sütunu vardır. Verileri satır (0) ve col (0) 'da basarsam, beş değerin tümünü verir. Yani temel olarak her satırda (0) col değeri 5 değer içerir.

İstenilen sonucum her satırda (satır, sütun) bir değer olacak 5 satır ve 5 sütun elde etmektir.

Yardımlarınız için şimdiden teşekkür ederiz.

+0

Yeniden şekillendirilecek ilk parametre, kanal sayısıdır. 5 satır ve 1 sütun 5 kanal matrisi yapıyorsunuz. 5 satır ve 5 sütun içeren 1 kanal matrisi istiyorsunuz. Dolayısıyla, mu.reshape (1,5); hatta hatta mu.reshape (0,5); '. [Docs] 'ı okuyun (http://docs.opencv.org/2.4/modules/core/doc/basic_structures.html#mat-reshape) –

cevap

0

reshape() işlevinin argümanlarının anlamını yanlış yorumlamış görünüyorsunuz.

documentation göre imza argümanlar aşağıdaki anlamı ile

Mat Mat::reshape(int cn, int rows=0) const 

geçerli:

  • cn - Kanalların yeni numarası. Parametre 0 ise, kanal sayısı aynı kalır.
  • satırlar - Yeni satır sayısı. Parametre 0 ise, satır sayısı aynı kalır.

Sütunların sayısının örtük olduğunu unutmayın - var olan matris özelliklerinden ve iki parametreden hesaplanır.

Buna göre, kod

data = mu.reshape(5, 5); 

5 satır ve 1 kolon, 5-kanallı matris oluşturur. girdi matrisi zaten tek kanal olduğu için

data = mu.reshape(1, 5); 

Alternatif olarak,, ayrıca

data = mu.reshape(0, 5); 
kullanabilirsiniz: Tek bir kanal 5x5 matrisine matris yeniden şekillendirmek amacıyla

, aşağıdakileri yapmak zorunda

+0

Çok teşekkür ederim. Bu mantıklı! – Edster

İlgili konular