VIDIOC_REQBUFS: Unpassender IOCTL (I/O-Control) für das Gerät

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Felix92
User
Beiträge: 133
Registriert: Mittwoch 7. November 2018, 17:57

Huhu und zwar hänge ich gerade an einem Fehler :
VIDIOC_REQBUFS: Unpassender IOCTL (I/O-Control) für das Gerät

Google Lösungen haben leider nicht geholfen.

Wird ausgelöst in folgendem Code:

Code: Alles auswählen

def check_board_area(self, progress):
        """
        a method that analyse the video frame per frame and save the Clips (Board) in a list
        """
        video = cv2.VideoCapture(self.__file_path)
        maxframes = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
        try:
            times = list()
            for frame_number in count():
                if frame_number % 30 == 0:
                    progress(frame_number/maxframes*100)
                is_ok, frame = video.read()

                if not is_ok:
                    if times:
                        self.subvideos.append((times[0], times[-1]))

                    break

                average = cv2.mean(frame)
                summe = average[0] + average[1] + average[2]
                percentage_green = (100 * average[1]) / summe

                if percentage_green > 40:
                    times.append(video.get(cv2.CAP_PROP_POS_MSEC) / 1000)
                elif times:
                    self.subvideos.append((times[0], times[-1]))
                    times.clear()
        finally:
            video.release()
            cv2.destroyAllWindows()
In anderen Methoden gibt es mit video = cv2.VideoCapture(xx) keine Probleme
Vlt. weiß ja jemand eine Lösung :)

MfG Felix und Vielen Dank !
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

VideoCapture::VideoCapture

Python: cv2.VideoCapture() → <VideoCapture object>
Python: cv2.VideoCapture(filename) → <VideoCapture object>
Python: cv2.VideoCapture(device) → <VideoCapture object>

Parameters:
filename – name of the opened video file (eg. video.avi) or image sequence (eg. img_%02d.jpg, which will read samples like img_00.jpg, img_01.jpg, img_02.jpg, ...)
device – id of the opened video capturing device (i.e. a camera index). If there is a single camera connected, just pass 0.

Es stellt sich also die Frage, was übergibst du mit self.__file_path ?
Eventuell mal mit print(self.__file_path) prüfen.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benutzeravatar
__blackjack__
User
Beiträge: 13113
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Das Attribut sollte übrigens ziemlich sicher nur einen statt zwei führender Unterstriche haben.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
Felix92
User
Beiträge: 133
Registriert: Mittwoch 7. November 2018, 17:57

Danke hat sich geklärt die Datei war fehlerhaft :?
Antworten