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
Felix92
User
Beiträge: 81
Registriert: Mittwoch 7. November 2018, 17:57

Montag 10. Juni 2019, 10:36

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: 774
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Montag 10. Juni 2019, 17:20

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: 4229
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Montag 10. Juni 2019, 17:52

Das Attribut sollte übrigens ziemlich sicher nur einen statt zwei führender Unterstriche haben.
“Give a man a fire and he's warm for a day, but set fire to him and he's warm for the rest of his life.”
— Terry Pratchett, Jingo
Felix92
User
Beiträge: 81
Registriert: Mittwoch 7. November 2018, 17:57

Dienstag 11. Juni 2019, 07:23

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