Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'opencv'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - DIY
    • Projekty - DIY roboty
    • Projekty - DIY (mini)
    • Projekty - DIY (początkujący)
    • Projekty - DIY w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie

Kategorie

  • Quizy o elektronice
  • Quizy do kursu elektroniki I
  • Quizy do kursu elektroniki II
  • Quizy do kursów Arduino
  • Quizy do kursu STM32L4
  • Quizy do pozostałych kursów

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Imię


Strona

Znaleziono 5 wyników

  1. Cześć, od kilku dni testuję wykrywanie ludzi w obrazie wideo z kamery przy użyciu biblioteki "OpenCV" (z bibliotekami8 python'a). Zacząłem od "kaskadowego Klasyfikatora Haar'a", który dobrze sprawdza się przy detekcji twarzy - patrz link: https://www.bogotobogo.com/python/OpenCV_Python/python_opencv3_Image_Object_Detection_Face_Detection_Haar_Cascade_Classifiers.php Niestety przy wykrywaniu ludzi (lub części ludzkiego ciała) wyniki nie są zadawalające. Jako drugi algorytm spróbowałem użycia deskryptora HOG (Histogram of Oriented Gradients) razem z algorytmem SVM (Support Vector Machines) - patrz linki: https://learnopencv.com/histogram-of-oriented-gradients/ https://www.thepythoncode.com/article/hog-feature-extraction-in-python https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_ml/py_svm/py_svm_index.html Użyłem wcześniej wytrenowanego SVM z deskryptorem HOG'a zainstalowanego razem z opencv -jak w tutorialu poniżej: https://www.pyimagesearch.com/2015/11/09/pedestrian-detection-opencv/ Według mnie poprawność wykrywania ludzi (zarówno false-positive jak i nie wykrycia ludzi) w danych (zdjęciach) na których algorytm nie był szkolony wynosi pomiędzy sześćdziesiąt a siedemdziesiąt procent. To trochę za mało do moich potrzeb, dlatego chciałbym doszkolić algorytm SVM, aby pewność poprawnej detekcji ludzkiego ciała wynosiła co najmniej 90 procent. Czy ktoś z Was próbował "doszkolić" SVM (z OpenCV) na swoich przykładach - jeśli tak to może mogę liczyć na jakieś podpowiedzi (czy linki). Z danych które znalazłem w sieci ten tutorial wydaje mi się najbardziej obiecujący: https://stackoverflow.com/questions/57598104/training-of-svm-and-prediction-using-opencv-with-python Próbował może ktoś robić podobną detekcję z użyciem konwolucyjnych sieci neuronowych CNN z frameworka Keras (razem z tensorflow), jeśli tak jakie były wyniki? Tutaj link do danych treningowych który znalazłem: https://paperswithcode.com/datasets BTW: czy u Was gdy uruchamiacie programy z wykorzystaniem biblioteki OpenCV na Raspbbery PI 4 lub Raspbbery Pi Compute Module 4 bardzo mocno przegrzewa się CPU? Pozdrawiam
  2. Cześć! Przedstawiam wam mój owoc lockdownu. Robot a3p jest czterokołową platformą wyposażoną w obrotową wieżyczkę z działkiem na sprężone powietrze, który przy wykorzystaniu openCV jest w stanie rozpoznawać i namierzać rozmaite cele. Mechanika Większość części została wykonana z PLA w technologii FDM przez Janka @Holgin, któremu serdecznie dziękuję. Montaż całej konstrukcji nośnej wymaga tylko 2 śrub. Reszta części montowana jest na wcisk (jaskółczy ogon). Konstrukcja jest prawidłowo sztywna oraz niewrażliwa na drgania mechaniczne, co świadczy o dobrej precyzji wykonania części. Koła montowane są na przesuwnych płytkach, co pozwala na regulację prześwitu. Konstrukcja kół zapewnia robotowi minimalną amortyzację. Warto wspomnieć o oponach, które również zostały wykonane na drukarce 3D (fiberflex). Minimalna szybkość druku i kolejne zerwania spowodowały, że był to zdecydowanie najtrudniejszy element do wykonania. Elektronika Platforma zasilana jest pojedynczą baterią LiPo 4S. Na potrzeby projektu wykonany został dedykowany moduł zarządzania mocą. Płytka oparta jest o STM32 i pozwala na selektywne włączanie 4 sekcji zasilania (3v3, 5v, 12v i vbat). Moduł dokonuje róznież pomiaru napięcia każdego ogniwa baterii oraz mierzy prąd płynący przez sekcję vbat (tam podłączone są silniki). Za projekt PCB ponownie dziękuję @Holgin. Za kontrolę peryferiów odpowiadają 2 raspberry pi (3B+ dla pojazdu, Zero W dla wieżyczki). Każde koło napędzane jest szczotkowym silnikiem DC (12V, 90RPM). Ruch wieżyczki realizowany jest za pomocą silnika krokowego (obrót) oraz serwa modelarskiego (góra-dół). Zakres ruchów to 360° w poziomie oraz 40° w pionie. Działko pneumatyczne zostało zaadaptowane z gotowego chińskiego airsoftu (napęd to szczotkowy silnik DC). Kamery to: Raspberry Pi Camera v2 (przód) oraz IR-CUT OV5647 (wieżyczka). Odległość do celu mierzona jest poprzez analizę odległości oraz kąta pomiędzy 2 plamkami lasera. Realizowane jest to za pomocą dwóch wskaźników laserowych i pozwala mierzyć dystans w zakresie 1-4 m. Oprogramowanie Komunikacja pomiędzy modułami oparta jest o framework ROS (Melodic). Za analizę obrazu odpowiedzialna jest biblioteka OpenCV. Robot może rozpoznawać obiekty dzięki gotowym sieciom ssd_mobilenet_v2 lub yolov3. Do wykrywania prostych okręgów wykorzystana została transformacja kołowa Hougha. Robot jest kontrolowany za pomocą desktopowego GUI (Qt5). W zakładce Live view widoczny jest obraz z obu kamer, aktualna liczba klatek dla kamery wieżyczki oraz odległość do celu. Możliwa jest tutaj zmiana trybu kamery oraz wydanie rozkazu strzału. W zakładce Settings mamy kontrolę nad sekcjami zasilania oraz możemy podejrzeć aktualną pozycję wieżyczki względem ramy robota. Kod projektu można znaleźć tutaj. Kod modułu zarządzania mocą tutaj. Zachęcam do pytań i oceny projektu. Pozdrawiam, Tomek
  3. Witam W wolnym czasie robię sorter, program działa na taśmie, używam biblioteki CV2. Chcę spróbować robić to w locie. Potrzebuję obsłużyć 2 kamery patrzące na siebie np. kamera(zastanawiam się nad tą) w ustawionej rozdzielczości np. 640 × 75 i 240 fps. Jestem na etapie dobierania sprzętu, zastanawiam się nad wydajnością ze względu na ilość klatek, czy Nvidia poradzi sobie z zadaniem, czy może dwa raspberry pi do kazdej kamery osobno. Macie jakieś pomysły?
  4. Mam w domu licznik prądu starego typu. Kiedy rachunki za prąd wzrosły powyżej 150 zł / mieś stwierdziłem, że czas na poszukiwanie przyczyn tego stanu rzeczy. Zacząłem od chińskiego watomierza, który doprowadził mnie do amplitunera Technics który w trybie standby zżera 30W. Byłem jednak ciekaw ile pobiera cały system monitoringu, lampy ogrodowe, NAS i kocioł itp. w rozkładzie godzinowym. Rozważałem zmianę taryfy z G11 na G12 lub G12W. Potrzebowałem danych. Ręczne spisywanie stanów licznika jest nużące i nudne. Przyszedł czas na emeocv - Electric meter with OpenCV. To darmowa biblioteka udostępniona na github. Pozwala na odczyt licznik na podstawie analizy zdjęć i zapis do RRD (Round Robin Database). Program napisany jest w C++ i korzysta ze znanej biblioteki OpenCV. Uruchomienie odczytów zajęło mi sporo czasu i nie dawało satysfakcjonujących wyników z uwagi na potrzebę dostosowania wielu zmiennych i rekalibracji po nawet delikatnej zmianie położenia kamerki. Przyszedł czas na instalację IDE pod C++ i wydanie własnej wersji programu. Krótka lista ficzerów: analiza zdjęć licznika dostarczanych z kamerki trening algorytmu poprzez ręczną klasyfikację przykładowego materiału zapis danych do CSV wewnętrzna kontrola jakości danych możliwość zapisu zdjęć do plików i późniejszą analizę statystyki Przejdźmy do rzeczy. Potrzebujesz: Raspberry PI (Zero, Zero W, testowałem też na RPI4b) z kartą pamięci. Alternatywnie: wystarczy dowolny komputer z pochodną Debiana (np. Ubuntu albo Linux Mint) oraz telefon komórkowy z Androidem. Kamerki (ja korzystałem z ArduCam OV5647 5Mpx) Uchwytu do kamerki - ja skorzystałem z połamanego uchwytu do telefonu (można kupić na allegro za 5-10 zł) Źródła światła (np.Lampka LED za mniej niż 5 zł) - musiałem dodać do niej rezystor bo świeciła zbyt mocno ja potrzebowałem hub'a USB żeby zasilić lampkę i malinkę z jednego zasilacza (koszt ok 10zł) Kolorowych karteczek samoprzylepnych Aplikacji Emeocv2 (moja własna wersja aplikacji wspomnianej powyżej) Dobrego nastroju i trochę czasu Wersja dla Raspberry PI Przygotowanie sprzętu: zamocuj kamerkę na statyw lub uchwyt, podłącz do malinki, ustaw światło tak aby niezależnie od światła dziennego licznik był równomiernie oświetlony. Ważne żeby nie świecić na wprost na szybkę licznika, bo pojawią się silne refleksy które utrudnią odczyt. Potem przyklej do licznika dwa kolorowe (najlepiej niebieskie) markery z karteczek samoprzylepnych (jeśli będą odpadać - użyj taśmy dwustronnej). Dzięki nim pogram bedzie w stanie ustalić obszar na którym znajdują się cyfry do analizy. Na zdjęciu poniżej widać przykładowy setup. Nie jest to za piękne ale to nie dzieło sztuki 😉 Instalacja: 1. Zainstaluj czystego Raspbiana na swoje malince 2. Podłącz kamerkę do Raspberry PI i włącz poprzez komendę raspi-config 3. Połącz się z RPI przez SSH (lub VNC) i pobierz Emeocv2 z https://github.com/wof2/emeocv2 4. Wejdź do katalogu głównego Emeocv2 i uruchom: ./debian_ubuntu_dependencies.sh Skrypt pobierze potrzebne zależności (przede wszystkim OpenCV) 5. Zbuduj make RELEASE=true 6. Wejdź do katalogu Release chmod +x emeocv 7. Zrób trochę zdjęć z kamerki aplikacją raspistill i zapisz pliki .png do wybranego katalogu. Hint: jeśli twój licznik znajduje się w pomieszczeniu gdzie zmieniają się warunki oświetlenia to jak będziesz wygładzał parametry najlepiej skorzystaj z trybu timelapse żeby zebrać zdjęcia z całej doby (np. co 15 min.). Najlepiej rób zdjęcia w rozdzielności nie większej niż 800x600. 8. Uruchom aplikację w trybie 'adjust' (najlepiej przeczytaj help do komendy - opal ją bez parametrów: ./emeocv) wskazując katalog w którym zapisałeś wcześniej zdjęcia. Pewnie analiza zakończy się błędem - musisz dostosować kilka parametrów - w katalogu Release edytuj plik config.yml. Najważniejsze parametry to: rotationDegrees: 0 #obraca obraz przed analizą cannyThreshold1: 120 # dolna granica dla algorytmu znajdowania konturów dostosuj metodą prób i błędów. Możesz zapisywać plik yml w trakcie analizy w trybie 'adjust' - co zdjęcie konfiguracja wczytywana jest ponownie. cannyThreshold2: 260 # górna granica znajdowania konturów. digitYAlignment: 20 # maksymalne różnie z położeniu kolejnych cyfr w osi Y mierzone w pikselach. counterMarkerHLOW: 85 # kolor markera (karteczki) w skali HSL (poczytaj w necie). Domyślne wartości ustawione są na detekcję niebieskiego. Wartość H (Hue) min. counterMarkerHHI: 110 # jak wyżej tylko max counterMarkerSLOW: 120 # wartość minimalnego nasycenia (Saturation) counterMarkerVLOW: 120 # minimalne V (Value) koloru karteczki. maxImageHeight: 600 # automatyczne przeskalowanie w dół - ustaw jeśli karmisz program dużymi obrazkami. digitCount: 7 # Łączna liczba cyfr na liczniku (łącznie z tą po przecinku) 9. Kiedy będziesz miał satysfakcjonujące wyniki z wcześniej zapisanych zdjęć to pora na trening naszego algorytmu. Uruchom emeocv z opcją -l (Learn). Teraz program będzie pokazywał serię zdjęć i pytał cię o klasyfikację zdjęć poszczególnych cyfr do skali 0-9. Potrzebujesz z grubsza tyle samo próbek dla każdej z cyfr. Możesz skorzystać z opcji emeocv -p żeby pokazać statystyki nauki. ./emeocv -p OCR stats: Trained responses: 1094 Trained responses histogram: Digit '0'->167 Digit '1'->184 Digit '2'->152 Digit '3'->148 Digit '4'->64 Digit '5'->60 Digit '6'->60 Digit '7'->112 Digit '8'->73 Digit '9'->74 10. Pora na automatyczne rozpoznanie cyfr na całym zbiorze zdjęć i pokazanie wyników ./emeocv -t -i obrazki/ -vDEBUG -s 10 11. Jeśli wyniki są ok to produkcyjnie odpalamy robienie zdjęć (np. co 2 minuty), analizę i wyplucie wyników do CSV. Służy do tego opcja -w (Write). Dla kamerki raspberry PI polecam wykorzystanie operacji -k, która pobiera zdjęcia z wyniku działania komendy w pliku config.yml. Domyślnie jest to raspistill czyli miniprogram na raspbianie do robienia zdjęć: cliCaptureCommand: raspistill -w 800 -h 600 -n -o Teoretycznie możesz tu nawet wsadzić pobieranie zdjęć z innego urządzenia. Alternatywnie użyj operacji -c (czyli Camera, podaj nr kamery np. -c0). Opcja wykorzystuje API openCV do odczytu z kamery. Mnie się ta opcja nie sprawdziła bo zdjęcia wychodziły albo za ciemne, albo poszczególne odczyty bardzo różniły się od siebie. 12. Wyniki będą się pojawiać w pliku emeocv.csv w katalogu Release. Patrz w logi emeocv.log i nie przejmuj się jeśli po kilkunastu przeanalizowanych zdjęciach plik jest pusty. Program cache'uje wyniki z ostatnich chyba 12 wyników i dopiero kiedy uzyska sensowną niemalejącą serię odczytów to dokonuje zapisu do pliku. Plik CSV możesz potem wciągnąć gdzie chcesz np. do arkuszy Google. Skorzystaj z mojego. Więcej informacji znajdziesz na https://github.com/wof2/emeocv2 Wersja z wykorzystaniem telefonu komórkowego - wkrótce
  5. Witam. mam taki kod, do uzyskiwania video, jak nałożyć białą maskę żeby tylko widzieć to co jest w niebieskiej ramce import cv2 cap = cv2.VideoCapture(0) cap.set(3,640) cap.set(4,380) while(1): _, frame = cap.read() cut = cv2,rectangle(frame, (220, 200), (450, 400), (255,0,0), 2) cv2.imshow('cut', cut) k = cv2.waitKey(5) & 0xFF if k == 27: break cv2.destroyAllWindows() Wielkie dzięki, pewnie dla was banalne, ja nie mogę znaleźć odpowiedzi.
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.