Czy są jakieś funkcje opencv, takie jak "cvHoughCircles()", które mogą być używane do programowania wykrywanie kwadratów dla programu wykrywania okręgu, który jest CvSeq * circles = cvHoughCircles(), ale nie mogłem znaleźć dla wykrycia kwadratu.Czy istnieją jakieś funkcje opencv, takie jak "cvHoughCircles()" do wykrywania kwadratów?
Odpowiedz
Nie potrzeba żadnej oddzielnej funkcji do tego. OpenCV jest dostarczany z kwadratową próbką detekcji (która faktycznie wykrywa prostokąty, możesz dodać ograniczenie, że wszystkie strony powinny być równe długości, aby uzyskać kwadrat).
Sprawdź ten link: squares.cpp
Jest to dobre wyjaśnienie, w jaki sposób ten kod działa w tym SOF: How to identify square or rectangle with variable lengths and width by using javacv?
Poniżej wynik można uzyskać, gdy zastosowanie tego kodu.
bt gdy próbuję uruchomić program, który pokazuje 2 błędy z powodu ** # include "opencv2/core/core.hpp" ** i ** # include "opencv2/imgproc/imgproc.hpp" ** ///// Błąd- \t błąd krytyczny C1083: Nie można otworzyć pliku include: "opencv2/core/core.hpp": Brak takiego pliku lub katalogu. Czy mógłbyś mi powiedzieć, jak rozwiązać ten błąd – Thar1988
Przykro mi nie używam C++. Można go zadać jako osobne pytanie, mówiąc, że twoje nowe pytanie jest kontynuacją tego pytania. –
Powinieneś zmienić te załączniki, aby ich ścieżka wskazywała miejsce zainstalowania tych plików. Powinna to być ścieżka względna, a nie pełna. –
Nie ma funkcji opencv, aby bezpośrednio znaleźć kwadraty.
Ale możesz użyć funkcji houghLines, która wykrywa linie i znaleźć przecięcia między liniami pod kątem 90 stopni.
Aby zmierzyć kąty pomiędzy liniami mogę zapewnić Państwu fragment kodu Java:
// returns cosine of angle between line segments 0 to 1, and 0 to 2.
// pt0 is the vertex/intersection
// angle of 90 degrees will have a cosine == 0
public static final double angleCosine(Point pt1, Point pt0, Point pt2) {
double dx1 = pt1.x - pt0.x;
double dy1 = pt1.y - pt0.y;
double dx2 = pt2.x - pt0.x;
double dy2 = pt2.y - pt0.y;
return (dx1 * dx2 + dy1 * dy2)/Math.sqrt((dx1 * dx1 + dy1 * dy1) * (dx2 * dx2 + dy2 * dy2) + 1e-10);
}
Dokumenty o houghLines:
http://docs.opencv.org/modules/imgproc/doc/feature_detection.html?highlight=houghlines#houghlines
- 1. OpenCV Suma kwadratów różnic prędkości
- 2. Czy są jakieś bezpłatne biblioteki klasy OpenCV?
- 3. Właściwe podejście do wykrywania cech dzięki opencv
- 4. Czy idempotentne funkcje są takie same jak czyste funkcje?
- 5. Czy istnieją jakieś biblioteki/frameworki dla SCons?
- 6. ważona liniowych najmniejszych kwadratów w OpenCV
- 7. Multiple wykrywania obiektów kolor za pomocą OpenCV
- 8. Czy istnieją jakieś narzędzia do śledzenia problemów Node.js?
- 9. HOG dla "wykrywania obiektu" opencv
- 10. Czy istnieją jakieś dobre, darmowe/tanie sterowanie siatką Delphi?
- 11. Optymalne podejście do wykrywania kształtów liści w opencv
- 12. Czy istnieją jakieś najlepsze praktyki NSIS lub standardy kodowania?
- 13. Android OpenCV Poprawianie jakości wykrywania
- 14. Czy istnieją jakieś ograniczenia dotyczące typów operatora typograficznego?
- 15. Dlaczego istnieją funkcje "getUTCSeconds` i" getUTCMilliseconds`?
- 16. Jakieś oprogramowanie, takie jak mieszanka do animacji płótna HTML5?
- 17. Pokaż funkcje, takie jak '+' lub '[' jak
- 18. W jQuery istnieją jakieś funkcje podobne do html() lub text(), ale zwracają całą zawartość dopasowanego komponentu?
- 19. jak zaimplementować funkcje wstecz i do przodu, takie jak przeglądarka
- 20. Czy DynamoDB obsługuje zagregowane funkcje, takie jak AVG, MAX, MIN?
- 21. Czy istnieją jakieś statyczne moduły konkatenacji/minifikacji JS dla Express.js?
- 22. Czy istnieją jakieś wbudowane zdarzenia wątku krzyżowego w Pythona?
- 23. Python i gpu Funkcje OpenCV
- 24. Czy istnieją jakieś biblioteki do analizowania "wyrażeń liczbowych", takich jak 1,2-9,33- w Javie
- 25. Czy istnieją jakieś alternatywy metaprogramowania w C++ oprócz szablonów?
- 26. Czy istnieją jakieś dobre tutoriale UIScrollView w sieci?
- 27. Czy istnieją jakieś praktyczne zastosowanie „void” struktury w .NET
- 28. Czy istnieją jakieś rozwiązania Bitcoin Payment dla Ruby?
- 29. Czy istnieją jakieś kryptograficznie bezpieczne biblioteki PRNG dla Delphi?
- 30. Czy istnieją narzędzia do zarządzania jakością inne niż SonarQube
Zważywszy, że wykrycie kwadratów jest znacznie łatwiejsze niż wykrywanie kręgi, nie zdziwiłbym się, gdyby squarefinding pozostawiono jako ćwiczenie dla kodera. Zasadniczo musisz znaleźć długie, połączone kolinearnie segmenty, które przecinają się pod kątem prostym i możesz wygenerować te segmenty za pomocą filtra i detektora krawędzi. Większość narzędzi, które musisz zrobić, powinno już być w OpenCV. – Rook
W tym celu użyjemy transformacji Hough dla linii, która jest również zaimplementowana w OpenCV;) – CTZStef
Patrz: http://stackoverflow.com/questions/10533233/opencv-c-obj-c-advanced-square- wykrywanie Istnieją trzy lub cztery podejścia, które można wypróbować pod tym linkiem. Ciesz się :) – ChathuraSam