Jaki jest najszybszy sposób na uzyskanie liczby białych pikseli na obrazie binarnym za pomocą OpenCV? Czy jest coś szybszego niż użycie dwóch pętli i uzyskanie dostępu do obrazu piksel po pikselu?Najszybszy sposób na uzyskanie liczby białych pikseli w obrazie binarnym za pomocą OpenCV
Odpowiedz
najbardziej zwięzły sposób do osiągnięcia tego celu jest:
cv::Mat image, mask; //image is CV_8UC1
cv::inRange(image, 255, 255, mask);
int count = cv::countNonZero(mask);
Jeśli pracujesz na obrazie binarnym, a następnie wezwanie do cv::inRange()
jest niepotrzebny, a po prostu cv::countNonZero()
wystarczy.
Mimo że dowolna metoda musi powtarzać się przez wszystkie piksele, może być w stanie wykorzystać wbudowane w OpenCV parallel_for_()
, co pozwala na równoległe wykonanie.
Jeśli obraz jest ciągły, można przeglądać wszystkie dane za pomocą pojedynczej pętli.
Dzięki, cv :: inRange jest tym, co chciałem! Używam OpenCV przez wrapper EmguCV (w C#), a ta jedna linia przyspieszyła mój program o około 40%. Czy masz pojęcie, dlaczego pętla na dwie pętle jest wolniejsza? – xx77aBs
Nie jestem zaznajomiony z C#, ale uważam, że sprawdza granice, gdy wykonujesz iterację w pętli, co może wyjaśnić niektóre różnice w wydajności. – Aurelius
Dzięki, sprawdzanie granic naprawdę spowalnia rzeczy. Ale zdarzenie po wyłączeniu sprawdzania ograniczeń, dla bardzo dużego obrazu (10240x7680) funkcja CV trwa około 70ms, a dwie dla pętli około 350ms. Po użyciu Parallel.For, obie pętle trwały około 200ms, ale to znacznie dłużej niż implementacja OpenCV. – xx77aBs
- 1. OpenCV - lokalizacje wszystkich niezerowych pikseli w obrazie binarnym
- 2. usuwanie szumów w obrazie binarnym za pomocą openCV
- 3. Najszybszy sposób przenoszenia obrazu w OpenCV
- 4. Najszybszy sposób na uzyskanie liczby cyfr na numerze?
- 5. OpenCV jak znaleźć listę podłączonych komponentów w obrazie binarnym
- 6. Kontury opencv: Jak wyeliminować małe kontury na obrazie binarnym
- 7. Najszybszy sposób na usunięcie białych spacji w ciągu znaków
- 8. Usuwanie hałaśliwych pikseli za pomocą opencv
- 9. OpenCV: Wyszukiwanie pikseli wzdłuż gałęzi jednopikselowych
- 10. opencv znajdowanie obrazu kordinates na innym obrazie
- 11. Uzyskanie poziomu pewności detektora MULTiscale w OpenCV za pomocą Pythona?
- 12. Czy istnieje sposób na uzyskanie danych pikseli z Internet Explorera?
- 13. Najszybszy sposób konwersji liczby na znak w R
- 14. Najszybszy sposób na uzyskanie aktualnej ćwiartki pod kątem
- 15. Draw koło (używając pikseli zastosowane w obrazie z pętli)
- 16. Jak programowo znaleźć lokalizacje pikseli określonych funkcji w obrazie?
- 17. Jaki jest najszybszy sposób na uzyskanie podmenu mapy
- 18. Najszybszy sposób na uzyskanie Javy liczności przecięcia BitSet
- 19. Dodaj tekst na obrazie za pomocą PIL
- 20. OpenCV - kurczyć obiektów pikseli
- 21. Jaki jest najlepszy sposób na uzyskanie optymalnej liczby tematów dla modelu LDA za pomocą Gensim?
- 22. Najszybszy sposób na aktualizację przestrzeni nazw za pomocą programu ReSharper?
- 23. Najszybszy sposób na pobranie nazwy domeny/hosta za pomocą javascript
- 24. Najszybszy sposób na bruteforce string za pomocą znaku wieloznacznego DOS
- 25. OpenCV biegania kmeans algorytm na obrazie
- 26. Czy istnieje sposób na uzyskanie "nazwanych" komórek za pomocą EPPlus?
- 27. Uzyskanie koloru dominacji opencv
- 28. Najszybszy sposób na zmianę rozmiaru obrazu
- 29. IDataReader - Jakikolwiek sposób na uzyskanie całkowitych wierszy?
- 30. Multiple wykrywania obiektów kolor za pomocą OpenCV
Czy obraz jest w rzeczywistej skali szarości, czy jest to obraz binarny? – Aurelius
@Aurelius: To jest właściwie obraz binarny, powinienem był to napisać w pytaniu. – xx77aBs