Załóżmy, że mam macierz transformacji Mat
tr
, którą otrzymałem od getAffineTransform()
i Point2d
p
. Chcę punktu, który jest wynikiem wypaczenia p
z tr
. Czy OpenCV zapewnia sposób na zrobienie tego?Jak mogę zastosować macierz transformacji do punktu w OpenCV?
10
A
Odpowiedz
14
cv::transform
służy do transformacji punktów za pomocą macierzy transformacji.
Każdy element tablicy N -Kanał src jest interpretowane jako N -elementowe wektorem, który jest przekształcany za pomocą M x N lub M, x (n + 1) Macierz M M-- element wektora odpowiedniego elementu tablica wyjściowa dst.
Funkcja ta może być używana do transformacji geometrycznej punktów N-wymiarowych, arbitralnej transformacji liniowej przestrzeni kolorów (np. Różnych transformacji RGB do YUV), tasowania kanałów obrazów i tak dalej.
Jest zwięzły przykład w InputArray
documentation (w przeciwnym razie nie ma znaczenia):
std::vector<Point2f> vec;
// points or a circle
for(int i = 0; i < 30; i++)
vec.push_back(Point2f((float)(100 + 30*cos(i*CV_PI*2/5)),
(float)(100 - 30*sin(i*CV_PI*2/5))));
cv::transform(vec, vec, cv::Matx23f(0.707, -0.707, 10, 0.707, 0.707, 20));
Można też prawdopodobnie tylko przekonwertować Point2f
w Mat
i pomnożyć przez macierz.
Powiązane problemy
- 1. Jak zastosować macierz transformacji do współrzędnych ścieżki w Raphael JS 2?
- 2. Obracanie punktu wokół punktu za pomocą OpenCV
- 3. Macierz wejściowa do klastra opencv, które grupuje
- 4. Jak uzyskać prawidłowe granice widoku po transformacji Macierz
- 5. Uzyskaj macierz rotacji między dwiema macierzami transformacji (XNA)
- 6. Jak ustawić dowolną macierz przekształceń w widoku?
- 7. SVG - Oblicz macierz transformacji do formatu SVG z innym viewbox
- 8. Jak zastosować DCT do obrazu w Pythonie?
- 9. W jaki sposób mogę jednocześnie zastosować wiele transformacji obracania za pomocą przełączania klas?
- 10. OpenCV: howto użyj parametru maski do detekcji punktu cechy (SURF)
- 11. Jak mogę zastosować styl do sterowania oknami w WPF?
- 12. OpenCV: wektor obrotu/translacji na macierz modelu OpenGL
- 13. Macierz obrotu o dowolnym punkcie
- 14. Stosowanie transformacji do zestawu w Raphael.js
- 15. Wyrównaj dwa obrazy w OpenCV
- 16. Homografia do transformacji rzutowej
- 17. Skalowanie do stałego punktu w KineticJS
- 18. Jak mogę zastosować tylko część skrytki git?
- 19. macierz od N do ostatniego elementu
- 20. Jednoetapowa transformacja afiniczna do obrotu wokół punktu?
- 21. Jak zastosować transformację do mapy STL w C++
- 22. NuGet: Jak mogę zastosować transformację do pliku .csdef projektu Cloud
- 23. Jak mogę zastosować wiele stylów XAML do jednego elementu?
- 24. Jak mogę zastosować mój arkusz stylów CSS do kanału RSS
- 25. Jak mogę zastosować stylizację do asp.net mvc @ Html.TextboxFor?
- 26. Jak mogę niezawodnie obracać obraz wokół punktu?
- 27. Implementacja transformacji szerokości obrysu (Python)
- 28. Jak zastosować funkcję do wariantu?
- 29. jak zastosować maskę do CompositionBrush
- 30. W clojure, jak zastosować makro do listy?
Dziękuję bardzo. Robi dokładnie to, co chciałem, nawet miałem wektor już pełen punktów, które transformują. Plus jest kilka innych funkcji, które chciałem również na tej samej stronie dokumentacji. Super przydatne. –
Dobrze, będę musiał pamiętać ten jeden. – beaker