Seite 2 von 2

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Freitag 4. Dezember 2020, 12:22
von sparrow
Code gehört und Fehlermeldungen gehören immer in den Beitrag. Am besten zwischen Code-Tags. Bilder sind fürchterlich umständlich. Das war also richtig.

Das ist kein Fehler im Code sondern in der Bibliothek. Das scheint auch bekannt zu sein. Habt ihr euch mal die URL angeschaut, die in der Fehlermeldung steht?

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Freitag 4. Dezember 2020, 13:16
von Emre
Ja hab ich, ich werde jetzt das ganze auf meinen Pi hochladen und dort nochmal ausprobieren.. Dort sollte alles schon installiert sein und auch funktionieren.

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Freitag 4. Dezember 2020, 13:44
von sparrow
Hast du dir auch die Lösungen angeschaut und versucht? Damit sollte sich das Problem unter Windows beheben lassen - nämlich indem du Numpy in der Version 1.19.3 installierst. Und zwar so:

Code: Alles auswählen

pip install numpy==1.19.3

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Freitag 18. Dezember 2020, 10:13
von Emre
Hallo nochmals,

wir haben soweit ein Programm und wollen es eigentlich nur noch testen. Letzte Woche haben wir bereits eine Strecke aufgebaut aus Papier welche wir ca. 4 Fingerbreit geschnitten haben. Allerdings fehlt unserem Fahrzeug noch einiges.. Wir haben bis jetzt nur die Motoren und die Räder drauf montiert so das wirs mit eigener Hand bewegen können. Uns fehlt aber noch die Halterung für die Kamera wo wir uns noch was einfallen lassen müssen (etwas einfaches am Anfang für die Aufnahme).

Wir haben bereits ein Video von der Strecke, ist allerdings nicht das beste da wir die Kamera mit eigener Hand halten mussten.. Wir arbeiten bereits am Pi und verwenden Pycharm.

Meine Frage wäre ob jemand weiß wie man das aufgenommene Video in Pycharm ins Programm einfügen kann. (Alles ist auf dem Pi, kann aber auch aufs PC übertreagen werden).

LG
Emre

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Freitag 18. Dezember 2020, 18:05
von __blackjack__
@Emre: Die Frage hört sich komisch an. Man fügt keine Videos in Programme ein und was hat das mit der IDE zu tun? Das Video ist ja eine Datei. OpenCV kann Video-Dateien öffnen und die Einzelbilder daraus einlesen.

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Samstag 19. Dezember 2020, 14:46
von Emre
Dann hab ich das wohl nicht ganz verstanden.. Hab in einem Youtube Video gesehen wie jemand ein Video eingefügt hat und so dann die ganzen Parameter für die Linien als auch die Farberkennung eingestellt hat.

Wie soll ich das sonst machen ?

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Samstag 19. Dezember 2020, 15:07
von __deets__
Na du lädst ein Video. Platzier es neben deinem Code & lade es, und lass deinen Algorithmus laufen.

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Freitag 8. Januar 2021, 12:29
von Emre
Ich hab versucht das aufgenommene Video einzubauen mit dem folgenden Code einzubauen:

import numpy as np
import cv2

cap = cv2.VideoCapture('video.h264')

while(cap.isOpened()):
ret, frame = cap.read()

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break

cap.release()
cv2.destroyAllWindows()

Das Video aufrufen kann ich allerdings trotzdem nicht.

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Freitag 8. Januar 2021, 12:52
von __deets__
Bitte die Code-Tags benutzen.

Bekommst du eine Fehlermeldung? Oder passiert einfach nichts? Kannst du das video irgendwo ablegen, so das man sich das mal anschauen kann?

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Mittwoch 13. Januar 2021, 14:20
von Emre
Ich könnte dir das Video per Mail weiterleiten, außer du hast eine bessere Idee..

Und ja, ich kriege folgende Fehlermeldung:

C:\Users\PycharmProjects\DiplomArbeit\venv\Scripts\python.exe C:/Users/PycharmProjects/DiplomArbeit/LaneDetectionModule.py
Traceback (most recent call last):
File "C:\Users\PycharmProjects\DiplomArbeit\LaneDetectionModule.py", line 9, in <module>
img = cv2.resize(img,(480,240))
cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-wvn_it83\opencv\modules\imgproc\src\resize.cpp:4051: error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'


Process finished with exit code 1

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Mittwoch 13. Januar 2021, 17:43
von __deets__
Das bedeutet ja erstmal, dass der Frame leer ist. Die Frage ist, ob alle leer sind. Was passiert, wenn du auf None prüfst?

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Donnerstag 14. Januar 2021, 13:36
von Emre
Ich hab es geschafft. Hab gestern durch Recherchen und auch bisschen Glück gefunden wie es funktioniert. Hab mal ein Video eingesetzt und mein Programm funktioniert bis jetzt perfekt. Nächster Schritt wäre das zusammenbauen, dann können die Tests durchgeführt werden.

Sollte ich Fragen haben, melde ich mich wieder.
Danke erstmals!

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Freitag 15. Januar 2021, 16:28
von Emre
Reicht es für die Data Collection einfach mit dem Roboter (händisch) die Strecke mehrmals durch zu fahren und so mithilfe der Kamera die Bilder in einem Ordner zu speichern?

Code für die Aufnahme wäre folgender:

Code: Alles auswählen

import cv2

cap = cv2.VideoCapture(0)

def getImg(display= False,size=[480,240]):
    _, img = cap.read()
    img = cv2.resize(img,(size[0],size[1]))
    if display:
        cv2.imshow('IMG',img)
    return img

if __name__ == '__main__':
    while True:
        img = getImg(True)
und folgender Code für das Speichern der Bilder:

Code: Alles auswählen

import pandas as pd
import os
import cv2
from datetime import datetime

global imgList, steeringList
countFolder = 0
count = 0
imgList = []
steeringList = []

myDirectory = os.path.join(os.getcwd(), 'DataCollected')
# print(myDirectory)

while os.path.exists(os.path.join(myDirectory,f'IMG{str(countFolder)}')):
        countFolder += 1
newPath = myDirectory +"/IMG"+str(countFolder)
os.makedirs(newPath)

def saveData(img,steering):
    global imgList, steeringList
    now = datetime.now()
    timestamp = str(datetime.timestamp(now)).replace('.', '')
    #print("timestamp =", timestamp)
    fileName = os.path.join(newPath,f'Image_{timestamp}.jpg')
    cv2.imwrite(fileName, img)
    imgList.append(fileName)
    steeringList.append(steering)

def saveLog():
    global imgList, steeringList
    rawData = {'Image': imgList,
                'Steering': steeringList}
    df = pd.DataFrame(rawData)
    df.to_csv(os.path.join(myDirectory,f'log_{str(countFolder)}.csv'), index=False, header=False)
    print('Log Saved')
    print('Total Images: ',len(imgList))

if __name__ == '__main__':
    cap = cv2.VideoCapture(1)
    for x in range(10):
        _, img = cap.read()
        saveData(img, 0.5)
        cv2.waitKey(1)
        cv2.imshow("Image", img)
    saveLog()

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Freitag 15. Januar 2021, 16:37
von __deets__
Grundsaetztlich reicht das, ja. Allerdings wuerde ich doch den Einsatz eines VideoWriters empfehlen, womit du dann Platz sparst. https://learnopencv.com/read-write-and- ... pp-python/

Und ich wuerde darueber nachdenken, ob du die Bilder wirklich resizen willst. Es ist normalerweise immer besser, Daten in der besten Qualitaet zu haben, weil man dann immer noch spaeter entscheiden kann, die zu reduzieren. Das mag im vorliegenden Fall aufgrund einer simplen Aufgabenstellung nicht soooo wichtig sein, aber vielleicht ein Tipp fuer die Zukunft.

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Samstag 16. Januar 2021, 07:56
von Emre
Danke für deinen Tipp __deets__. Ich habe mir die Seite angeschaut.

Mir ist aufgefallen das in meinem Code sozusagen ein Start- und Stoppbefehl fehlt. Ich würde ja in diesem Fall ein unendlich langes Video aufnehmen oder?

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Samstag 16. Januar 2021, 09:51
von __deets__
Naja, bis man es abbricht eben. Warum willst du da extra starten und stoppen? Du kannst das Material ja nachträglich noch zurecht schneiden.

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Mittwoch 10. Februar 2021, 20:48
von Emre
Ich habe ein kleines Problem beim verstehen der Funktionsweise. Um nochmal alles klarzustellen: Ich hab ein Programm für die Lienen Verfolgung was auch funktioniert. Meine Frage wäre ob ich mit diesem Programm das Fahrzeug direkt fahren lassen kann im Sinne von (erkenne die Kurve und lenke ein) oder muss ich unbedingt das Fahrzeug davor trainieren und somit Daten der Strecke "einsammeln".

Ich hoffe ich konnte mich gut ausdrücken.

LG

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Mittwoch 10. Februar 2021, 20:51
von __deets__
Wenn du sagst es funktioniert, was genau meinst du damit? Denn wenn es das tut, dann musst du doch nichts mehr machen. “Trainieren” musst du doch nur, wenn etwas nicht geht.

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Donnerstag 11. Februar 2021, 14:05
von Emre
Ich habe damit das Programm selbst gemeint. Ich hatte noch nicht die Gelegenheit es auf den Pi zu übertragen und es am Fahrzeug auszuprobieren.

Re: Navigation eines Autonomen-Roboters mittels Kamera

Verfasst: Donnerstag 11. Februar 2021, 15:45
von __deets__
Kann man von hier aus nicht beurteilen. Wenn es lokal alles tut was es tun soll, und du Filmmaterial vom echten Roboter hast, dann ist das erstmal alles.