2017-12-17 3 views
0

Ich habe in letzter Zeit an opencv gearbeitet. Installierte es auf meinem Ubuntu 16.04. Ich denke, es hat ein paar Probleme. Jedes Mal, wenn ich versuche, die FunktionProbleme bei der Implementierung von cv2.imshow()

cv2.imshow('frame',frame) 

es stellt diesen Fehler

OpenCV Error: Unspecified error (The function is not implemented. 
Rebuild the library with Windows, GTK+ 2.x or Carbon support. 
If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvShowImage, file /tmp/build/80754af9/opencv_1512687413662/work/modules/highgui/src/window.cpp, line 611 
Traceback (most recent call last): 
    File "hands.py", line 12, in <module> 
    cv2.imshow('frame',frame) 
    cv2.error: /tmp/build/80754af9/opencv_1512687413662/work/modules/highgui/src/window. 
cpp:611: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. 
    If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvShowImage 

Der Code, den ich versuchte laufen laufen soll

import numpy as numpy 
import cv2 
import matplotlib.pyplot as plt 

cap = cv2.VideoCapture(0) 
bg = cv2.bgsegm.createBackgroundSubtractorMOG() 

while True: 
    ret,frame = cap.read() 
    vid = bg.apply(frame) 

    cv2.imshow('frame',frame) 
    cv2.imshow('vid',vid) 
    key = cv2.waitKey(0) & 0xff 
    if key == 27: 
     break 

cap.release() 
cap.destroyAllWindows() 

ich versuchte, jede mögliche Sache zu Google und tat alles, was ist möglich, aber immer noch nicht in der Lage, das Problem zu lösen.

Ich habe auch versucht

matplotlib.pyplot.imshow('frame',frame) 
matplotlib.pyplot.show() 

statt

cv2.imshow('frame',frame) 

aber dies gibt dem Fehler

TypeError: unhashable type: 'numpy.ndarray' 

mit dem Video von meiner Webcam gefangen zu zeigen. Es zeigt entweder nur ein Bild und einen Fehler bei cv2.waitkey() anstelle des Videos oder dieses Fehlers. Gibt es eine Methode, um diesen Fehler zu beheben? oder um cv2 GUI-Funktionen zu implementieren?

+0

Bitte lesen und verstehen [MCVE] sehen. Es ist unklar, welchen Code Sie ausführen, um den Fehler zu erhalten. Wie sollen wir hier helfen? – ImportanceOfBeingErnest

+0

Sorry wegen der Unvollständigkeit in meiner Frage, ich habe ein Stück meines Codes gepostet. Kannst du mir damit helfen? – Darshan

Antwort

0

Scheint so, als hätten Sie ein Problem mit Ihrer cv2-Installation. Ich kann nicht helfen, aber ich würde empfehlen, neu zu installieren und sicherzustellen, dass die richtige Version für Ihr System (passende OS, Bittiefe und Python-Version) verwendet wird.

Als Workaround können Sie tatsächlich matplotlib verwenden, um das Bild anzuzeigen. Ein minimales Beispiel wäre

import cv2 
import matplotlib.pyplot as plt 

cap = cv2.VideoCapture(0) 

plt.ion() 
fig, ax = plt.subplots() 
ret,frame = cap.read() 
im = ax.imshow(frame) 

while True: 
    ret,frame = cap.read() 
    im.set_data(frame) 
    plt.pause(0.5) 

plt.ioff() 
plt.show() 

Auch update frame in matplotlib with live camera preview

+0

Danke für die Antwort, aber ich bekomme diesen Fehler. 'Bilddaten können nicht in Float umgewandelt werden – Darshan

+0

Die letzte Zeile ist nicht genug, man muss die vollständige Fehlerverfolgung kennen. – ImportanceOfBeingErnest

+0

'----> 9 im = ax.imshow (Rahmen)' – Darshan

Verwandte Themen