Ahoj celej programátorskej spoločnosti!
Pre mňa je zvykompotvrdenie každého algoritmu, ktorý v projektoch používam. Prednedávnom som implementoval knižničné metódy OpenCV na detekciu obrysov vo vstupnom rámci a na vykreslenie ohraničujúceho obdĺžnika okolo detekovaného objektu. Tak som prišiel s otázkou: aký algoritmus v skutočnosti používa OpenCV pri volaní vhodných metód? (Mám na mysli presné metódy cv2.findContours a cv2.boundingRect)
Vopred ďakujem.
odpovede:
4 pre odpoveď č. 1Podľa dokumentácie OpenCV findContours používa “Suzuki, S. a Abe, K., topologická štrukturálna analýza digitalizovaných binárnych obrazov podľa hraníc"
Funkcia načíta obrysy z binárneho obrazu pomocou algoritmu [Suzuki85].
Nenašiel som popis algoritmu boundingRect, ale našiel sa tento súbor v opencv repo
7.a Rovný ohraničujúci obdĺžnik Je to priamy obdĺžnik, nepovažuje rotáciu objektu. Takže oblasť ohraničujúceho obdĺžnika nebude minimálna. Nachádza sa vo funkcii cv2.boundingRect (). Nech (x, y) je súradnica pravouholníka vľavo hore a (w, h) jej šírka a výška. @code {.py} x, y, w, h = cv2.boundingRect (cnt) cv2. rectangle (img, (x, y), (x + w, y + h), (0,255,0), 2) @endcode
Zdá sa teda, že funkcia boundingRect nájde iba minimálnu a maximálnu súradnicu vstupnej sady bodov
PS Ospravedlňujem sa za moju zlú angličtinu