Seite 1 von 1

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

Verfasst: Montag 10. Juni 2019, 10:36
von Felix92
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 !

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

Verfasst: Montag 10. Juni 2019, 17:20
von ThomasL
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.

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

Verfasst: Montag 10. Juni 2019, 17:52
von __blackjack__
Das Attribut sollte übrigens ziemlich sicher nur einen statt zwei führender Unterstriche haben.

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

Verfasst: Dienstag 11. Juni 2019, 07:23
von Felix92
Danke hat sich geklärt die Datei war fehlerhaft :?