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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Löste das problem, indem man um ihn herum völlig.
Verwendet die opencv-feedstock - Rezept von OpenCV für conda-Schmiede. In der
recipe
Ordner die build-Informationen für conda. Ich veränderte diebuild.sh
- Datei, ändern Sie die folgenden Optionen:lief
conda build --numpy 1.12 recipe
aus dem übergeordneten Verzeichnis (festlegen mussten die NumPy-version, das build-Skript Anforderung Listennumpy x.x
was bedeutet, dass Sie haben, um die version zur Laufzeit), und wartete.Nahm immer (im ernst, ein paar Stunden auf einer sehr leistungsstarken Maschine--die Zeit, die Spüle ist CUDA), aber die bauen schließlich erfolgreich abgeschlossen.
Dann war es nur eine Frage der Installation der lokal erstellten bz2-Archiv (
conda install --use-local opencv
). Nicht mehr komisch ioctl-Fehler-Nachrichten, und das obige script hat Prima funktioniert.conda build []
Befehl.Ich Stand vor dem gleichen problem mit Anaconda private env & Python 3.5 auf Ubuntu 16.04 .
Zunächst installiert Opencv3 mit
Lösung:
Entfernen Opencv3
conda remove opencv3
Installieren Opencv3 mit
pip install opencv-contrib-python
Wenn das problem weiterhin besteht:
sudo apt-get install ffmpeg
sudo apt-get install libavcodec-dev libavformat-dev libavdevice-dev
menpo
OPENCV BAUEN. Das menpo-Kanal opencv-Paket wird nicht mehr gepflegt. Finden Sie IhreREADME
Begehen von Oct-2017: github.com/menpo/conda-opencv3 . Jedoch, dieconda-forge
opencv Aufbau wurde stark verbessert aus der Zeit der original-Beitrag, so dass eine sinnvolle alternative sein.