OpenCV3 Fehler: "Unable to stop the stream: Unangemessene ioctl für Gerät"

Ich versuche zu Lesen, der frames ein .mov-Datei mithilfe von OpenCV 3.2 (von der menpo conda-Kanal). Ich bin mit Python 3.5.3 durch Anaconda auf Ubuntu 16.04 64-bit-setup.

Problem ist, ich bekomme die folgende Fehlermeldung von OpenCV, wenn es Sie trifft die cap.read() nennen, und die Schleife wird sofort unterbricht und fängt das if num == 0 bedingte.

Hier ist der gesamte code, den ich verwende:

import cv2
import numpy as np
import sys

f = sys.argv[1]
cap = cv2.VideoCapture(f)

frames = []
num = 0
while cap.isOpened():
    ret, frame = cap.read()
    if not ret: break
    gframe = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    frames.append(gframe)
    num += 1
    if num % 100 == 0:
        frames.append(gframe)
    if num % 1000 == 0:
        print(num)

if num == 0:
    print("Something went wrong: no frames found.")
    exit(0)

cap.release()

user@ubuntu:/data$ python read.py movie.mov 
Unable to stop the stream: Inappropriate ioctl for device
Something went wrong: no frames found.
user@ubuntu:/data$

Habe ich gefunden, ein paar andere StackOverflow Fragen zu diesem Thema, aber Sie weiß nicht Recht zu übersetzen, um meine genauen Umstand:

  • Diese Frage schlägt vor, den Wiederaufbau OpenCV (auch verwendet Python 2). Das ist keine option für mich, wie ich versucht bin, dies zu tun mit Anaconda.
  • Diese zwei Fragen (hier und hier) auf die OpenCV-Foren blieben ohne jede befriedigende Antworten.
  • Diese eine hat eine lebhafte Diskussion und eine Gründliche Antwort, aber es ist spezifisch für perl.

Zu diesem Dritten Punkt-es gibt durchaus ein paar andere Fragen hier, dass das Zitat inappropriate ioctl for device aber es ist schwer zu sehen, wenn einer von Ihnen ist unmittelbar relevant für dieses problem.

Teilweise beiseite: ich installiert habe, genau dasselbe opencv3 conda-Paket auf meinem macOS Maschine, und den code habe ich eingefügt, hier funktioniert einwandfrei und auf genau die gleiche .mov-Datei, ich habe versucht auf die Ubuntu-Maschine.

Irgendwelche Ideen?

  • viel Glück-auf das Problem?
  • Nope 🙁 ich dachte, es hätte etwas zu tun mit prereqs, bevor Anaconda installieren, aber es scheint nicht wichtig zu sein.
  • nach meiner Forschung, es scheint relevant zu sein, um das fehlen der ffmpeg von opencv. Viel Diskussion auf die Zusammenstellung von opencv mit ffmpeg um dieses problem zu beheben. Haben Sie jemals versuchen, die route?
  • Ich sah, dass die Lösung auch (es ist aufgeführt in meiner Frage), aber das problem ist, ich möchte, um es zu lösen, ohne zu bauen, OpenCV von Grund auf neu. Eher, ich möchte in der Lage sein zu verwenden, menpo die conda zu bauen, um installieren Sie OpenCV.
  • versuchen Sie dies: github.com/menpo/conda-opencv3?
  • OH, das ist auf der GitHub repo mit Anleitung! Lassen Sie mich einen Blick...
  • bitte lassen Sie mich wissen, ob die Methode funktioniert auf Ihrem Rechner. Es funktioniert hier nicht. Ich versuche eine andere Methode.
  • Ich in einiger OpenCV-build-Fehler. Versuchen, zu diagnostizieren.
  • Siehe unten meine Antwort; verwendet die neuere conda-Schmiede Ausgangsstoff für OpenCV, obwohl mit ein bisschen benutzerdefinierte build-Skript, und es hat Prima funktioniert.

InformationsquelleAutor Magsol | 2017-03-02
Schreibe einen Kommentar