Jak znaleźć położenie wszystkich niezerowych pikseli w obrazie binarnym (cv :: Mat)? Czy muszę skanować każdy piksel na obrazie lub czy istnieje funkcja wysokiego poziomu OpenCV, którą można wykorzystać? Wyjście powinno być wektorem punktów (lokalizacje pikseli).OpenCV - lokalizacje wszystkich niezerowych pikseli w obrazie binarnym
Na przykład, można to zrobić w Matlab po prostu jako:
imstats = regionprops(binary_image, 'PixelList');
locations = imstats.PixelList;
lub, jeszcze prostszy
[x, y] = find(binary_image);
locations = [x, y];
Edit: Innymi słowy, jak znaleźć współrzędne wszystkich nie- zero elementów w cv :: Mat?
której wersji opencv używasz? W wersji 2.4.4 Pythona mogłem znaleźć podobną funkcję "cv2.findNonzero", co oznacza, że powinno być tam również w C++. Ale nie jest to w dokumentach. Więc zainstaluj 2.4.4 i sprawdź tę funkcję. –
Thx, nie ma cv :: findNonzero w wersji OpenCV 2.4.2 (C++), którą posiadam. – Alexey
Myślę, że przychodzi w 2.4.4. Mam go od wersji 2.4.4 Pythona. Więc jeśli chcesz go użyć, możesz zaktualizować do 2.4.4 –