w OpenCV 2 i później jest metoda Mat::resize
, która pozwala ci dodać dowolną liczbę wierszy z domyślną wartością do macierzy, czy istnieje odpowiednia metoda dla kolumny. a jeśli nie, jaki jest najskuteczniejszy sposób na zrobienie tego. DziękiOpenCV Dodaj kolumny do macierzy
Odpowiedz
Zastosowanie cv::hconcat
:
Mat mat;
Mat cols;
cv::hconcat(mat, cols, mat);
I nie próbuj znajdować dokumentów dla tej funkcji. Jest to nieudokumentowane. –
Kod nagłówka jest tutaj: https://github.com/Itseez/opencv/blob/master/modules/core/include/opencv2/core.hpp#L968. Dla kompletności, pionową konkatinację można wykonać za pomocą 'vconcat()', a także 'cv :: Mat :: push_back()' –
Dokumentacja: http://docs.opencv.org/trunk/d2/de8/group__core__array.html –
Najgorszy scenariusz: rotate the image by 90 degrees i użyj Mat::resize()
, dzięki czemu kolumny staną się wierszami.
OK, ale to jest najgorszy przypadek, a co jeśli moja mata zawiera CV_64FC1, a rozmiar jest zbyt duży (500 * 500) i muszę to zrobić dla dużej liczby macierzy, więc nie chcę uwzględniać procesu obracania lub transpozycji dwóch tak dużych macierzy w algorytmie. – AMCoded
Jak powiedziałem, ** najgorszy przypadek **. Gdybym znał najlepszy przypadek, podzieliłbym się nim z tobą. – karlphillip
Ponieważ OpenCV przechowuje elementy rzędów macierzy kolejno jedna po drugiej, nie ma bezpośredniej metody zwiększania rozmiaru kolumny, ale wychowuję sobie dwa rozwiązania dla powyższej sprawy, Najpierw przy użyciu poniższej metody (kolejność kopiowania elementów jest mniej niż inne metody), możesz również użyć podobnej metody, jeśli chcesz wstawić kilka wierszy lub kolumn, nie na końcu matryc.
void resizeCol(Mat& m, size_t sz, const Scalar& s)
{
Mat tm(m.rows, m.cols + sz, m.type());
tm.setTo(s);
m.copyTo(tm(Rect(Point(0, 0), m.size())));
m = tm;
}
a drugi jeśli nalegają, aby nie obejmować nawet kopiując kolejność danych do algorytmów to lepiej, aby utworzyć macierz z wielkiej liczby wierszy i kolumn i uruchomić algorytm z mniejszym podmatrycy następnie zwiększ swój rozmiar matrycy metodą Mat::adjustROI
.
- 1. Dodaj wiersz do macierzy w OpenCV
- 2. Dodawanie kolumny do macierzy komórkowej
- 3. Mnożenie macierzy w OpenCV
- 4. Konwersja pętli w macierzy OpenCV do JavaCV
- 5. Dostęp do macierzy opencv Element CV_32S
- 6. Dodaj alfa do istniejącej macierzy kolorów matplotlib
- 7. Wysyłanie danych z macierzy OpenCV do Matlab Engine, C++
- 8. Dodawanie nowej kolumny do błędu macierzy
- 9. R dostępu do wektora kolumny macierzy nazwy
- 10. Dodaj kolumny do wyników zapytania SQL
- 11. Dodaj znaki do kolumny numerycznej w dataframe
- 12. Dodaj „rangi” kolumny do ramki danych
- 13. Wydrukuj wartości macierzy (Mat) w OpenCV C++
- 14. OpenCV cv :: Mat 'ones' dla macierzy wielokanałowej?
- 15. OpenCV 2.3: Konwertuj macie do macierzy pikseli RGBA
- 16. Konwertuj obraz macierzy pływalności do formatu użytego dla opencv
- 17. Konwersja obrazu macierzy opencv do danych obrazu tensorflow
- 18. Baza danych szyn Dodaj kolumny
- 19. Dodaj elementy dwóch macierzy ze sobą
- 20. dodaj kolumny różnej długości pandy
- 21. Dodaj kolumny dynamicznie w Cassandry
- 22. ASP.net Web API - Dodaj nazwę macierzy do wyjścia
- 23. Dodaj wartości do rzadkiej macierzy Scipy z indeksami i wartościami
- 24. Jak zmienić typ kolumny macierzy w R
- 25. PostgreSQL: Dodaj interwał do datownika z wartości kolumny
- 26. Pandy: dodaj kolumnę do kolumny danych z wielomaindexami
- 27. Dodaj wiązanie do kolumny tabeli przy użyciu Create.Table, FluentMigrator
- 28. Dodaj kolumny do pustej ramki danych w R
- 29. Dodaj predefiniowane domyślne do kolumny w T-SQL
- 30. Dodaj kolumny tożsamości do widoku SQL Server 2008
miałem wygląd doc online i wydaje się nie mieć funkcję dodawania kolumn. http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html?highlight=mat#Mat::resize –