Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Fabuła
Zrobiłem ten projekt, aby nauczyć się przetwarzania obrazu za pomocą Raspberry PI i otwartego CV. Aby uatrakcyjnić ten projekt użyłem dwóch silników SG90 Servo i zamontowałem na nim kamerę. Jeden silnik służy do poruszania się w poziomie, a drugi do poruszania się w pionie.
Kieszonkowe dzieci
Pełny zapis
Śledzenie obiektów w oparciu o wykrywanie kolorów
1. Zainstaluj Raspbian Strech na Raspberry 3B+
a. Sprawdź mój film na YouTube od:- do 15:10 do 16:42 ->>
b. Użyj konwertera HDMI-VGA, aby połączyć RPI z monitorem oraz klawiaturą i myszą USB.
C. Uruchom pulpit RPI i wykonaj następny krok.
D. Zalecamy korzystanie z monitora, jeśli jesteś początkujący, ponieważ bezpośredni dostęp do PI jest łatwy dla początkujących.
2. Zainstaluj Open CV na RPI3B+
a.
b. Czas potrzebny:-około 8+ godzin
C. Poświęcam dwa dni na ukończenie tego procesu (20 godzin), więc bądź namiętny i spokojny.
3. Zainstaluj bibliotekę PCM9685 na Raspberry PI.
a. Dokumentacja referencyjna:-
b. Sprawdź łączność PCM9685 i2c z RPI
i. Uruchom: - sudo apt-get install python-smbus
ii. Uruchom: - sudo apt-get install i2c-tools
iii. Uruchom:- sudo i2cdetect -y 1
1. Obraz udanej komunikacji z PCM9685
C. Otwórz Terminal i uruchom: - źródło ~/.profile #aby wejść do środowiska wirtualnego.
D. Otwórz terminal i uruchom: - pip3 zainstaluj adafruit-circuitpython-servokit
mi. Nigdy nie używaj „sudo”, w przeciwnym razie napotkasz problem, ponieważ użycie „sudo” nie zainstaluje biblioteki w twoim środowisku wirtualnym.
F. Sprawdzanie serwa
i. Otwórz python3 i wprowadź poniższe polecenia.
ii. z adafruit_servokit importuj ServoKit
iii. zestaw = ServoKit(kanały=16)
iv. zestaw.servo[0].kąt = 90
v. zestaw.servo[0].kąt = 180
vi. zestaw.serwo[0].kąt = 0
4. Szczegóły połączenia:-
a. Podłącz 5VDC do PCM9685 (do pracy serwo wymagane jest zewnętrzne napięcie 5V)
b. \Podłącz piny zasilania PC9685 I2C i logiki z pinami RPI.
C. Podłącz dwa serwo do PCM9685
5. Sprawdzenie serwa
a. Przygotowałem 4 pliki do sprawdzenia serw (180.py, 90.py, 0.py).
i. Dla 0 stopni. (Oba serwo przy 0 stopniach).
ii. Do 90 stopni. (Oba serwo pod kątem 90 stopni).
iii. Przez 180 stopni. (Oba serwo pod kątem 180 stopni).
iv. Kod źródłowy ()
6. Zainstaluj kamerę PI na złączu kamery i zamontuj serwo, jak wyjaśniono w filmie instruktażowym.
a. Adres URL samouczka:-
7. Uruchom kod śledzenia obiektów (pobierz z:-)
8. Otwórz terminal
a. Uruchom: - źródło ~/.profil.
b. Uruchom: - praca na cv.
C. Zaznacz „(CV)” przed komendą terminala.
D. Uruchom kod śledzenia obiektów:- „ścieżka lokalizacji pliku”/python3. „nazwa pliku”
mi. Aby wyjść, naciśnij:- Esc
Krok 1: Praca Projektu:-
- Obraz przechwycony przez kamerę RPI i przetworzony w Pythonie przy użyciu openCV.
- Przechwycony obraz jest konwertowany z RGB na HSV.
- Zastosuj maskę dla określonego koloru (w moim ostatecznym kodzie użyłem koloru CZERWONEGO, a specjalny kod służy do znalezienia dokładnej wartości maskowania, która jest również dołączona do heartwith).
- Znajdowanie konturów dla wszystkich czerwonych obiektów w ramce.
- Wreszcie sortowanie i wybieranie pierwszych konturów da największy czerwony obiekt w ramce.
- Narysuj prostokąt na obiekcie i znajdź środek prostokąta w poziomie i pionie.
- Sprawdź różnicę między środkiem w poziomie ramy a środkiem w poziomie prostokąta obiektu.
- Jeśli różnica jest większa niż ustawiona wartość, zacznij poruszać serwomechanizmem poziomym, aby zminimalizować różnicę.
- W ten sam sposób możemy przesuwać oś pionową i wreszcie śledzenie obiektów działa dla 180 stopni.
Krok 2: Przygotuj RPI:- Przewodnik po konfiguracji Czas to:- 15:10 do 16:42 w YouTube Video
Pobierz Raspbian Streach i umieść go na karcie pamięci 32 GB. URL:-https://downloads.raspberrypi.org/raspbian_full_latest.
Po pobraniu obrazu Raspbian rozpakuj go i przechowuj na pulpicie (lub w odpowiednim miejscu).
Aby zapisać obraz na karcie SD, pobierz Eatcher.
URL:
Podłącz kabel HDMI do VGA do RPI i monitora LCD.
Podłącz klawiaturę i mysz USB i włącz PI za pomocą zasilacza (2,5 A)