Macbook Kamera einbinden

Probleme bei der Installation?
Antworten
Manyou99
User
Beiträge: 2
Registriert: Mittwoch 30. Oktober 2019, 23:09

Servus zusammen,

ich habe folgendes Problem:

Ich möchte für ein Schulprojekt eine Gesichtserkennung programmieren. Auf einem LiveBild sollen Gesichter erkannt werden.
Allerdings bekomme ich immer einen Fehler wenn ich das Programm ausführe das nur das Kamera-Bild zeigen soll. Ich habe jetzt schon mehrmals gelesen dass das Macbook die Kamera nicht für das Programm freigibt. Wie kann ich das denn beheben?

Hier ist mein Code:

Code: Alles auswählen

import cv2, time

video = cv2.VideoCapture(0)
a = 0

while True:
    a = a + 1
    check, frame = video.read()

    print (check)
    print(frame)

    cv2.imshow("Capturing", frame)

    key = cv2.waitKey(1)

    if key == ord('q'):
        break
print(a)
video.release()
cv2.destroyAllWindows()
Wenn ich es ausführe kommt folgender Fehler:

Code: Alles auswählen

/Users/manuel/opt/anaconda3/envs/Test/bin/python /Users/manuelhirsch/PycharmProjects/untitled1/cam.py
False
Traceback (most recent call last):
None
  File "/Users/manuel/PycharmProjects/untitled1/cam.py", line 13, in <module>
    cv2.imshow("Capturing", frame)
cv2.error: OpenCV(3.4.2) /opt/concourse/worker/volumes/live/9523d527-1b9e-48e0-7ed0-a36adde286f0/volume/opencv-suite_1535558719691/work/modules/highgui/src/window.cpp:356: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'imshow'


Process finished with exit code 1
Zum Coden verwende ich "PyCharm"
Und um die Pakete zu laden die man so braucht "Anaconda"

Besten Dank schon mal

Gruß
Manu
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du hast einen Frame. Sondern None. Das kann natürlich nicht dargestellt werden. Es kann durchaus sein, dass der Videostrom erstmal ein paar Leerframes liefert. Also auf None prüfen & nur darstellen, wenn es auch wirklich ein Bild ist.
Manyou99
User
Beiträge: 2
Registriert: Mittwoch 30. Oktober 2019, 23:09

__deets__ hat geschrieben: Mittwoch 30. Oktober 2019, 23:31 Du hast einen Frame. Sondern None. Das kann natürlich nicht dargestellt werden. Es kann durchaus sein, dass der Videostrom erstmal ein paar Leerframes liefert. Also auf None prüfen & nur darstellen, wenn es auch wirklich ein Bild ist.

Danke für die schnelle Antwort

ich habe den Code abgeändert

Code: Alles auswählen

import cv2, time

video = cv2.VideoCapture(0)
a = 0

while True:
    a = a + 1
    check, frame = video.read()

    print (check)
    print(frame)

    if frame != None:
        cv2.imshow("Capturing", frame)

    key = cv2.waitKey(1)

    if key == ord('q'):
        break
print(a)
video.release()
cv2.destroyAllWindows()

Wenn ihn jetzt ausführe bekomme ich auf der Konsole immer die beiden "print-Befehle" (ist ja eine schleife), ein Bild kommt allerdings nie.
Die Led der Webcam meines Macbooks leuchtet einmal kurz, geht dann aber wieder aus.



Ausgabe:

Code: Alles auswählen

/Users/manuelhirsch/opt/anaconda3/envs/Test/bin/python /Users/manuelhirsch/PycharmProjects/untitled1/cam.py
False
None
False
None
False
None

(Endlosschleife)
Ich bekomme zumindest keinen Fehler, aber das Kamerabild bekomme ich auch noch nicht, woran könnte das denn liegen?
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Auf None prüft man mit dem is-Operator.

Ich finde da einiges an Ergebnissen online wenn man danach sucht. An sich sollte das so gehen. Manche installieren neu, andere geben der Kamera Bilddimensionen.

http://answers.opencv.org/question/7522 ... ra-on-osx/

Wirklich schlüssig ist da nix. Für mich geht es auf meinem 💻 Air.
Antworten