J'écris un programme en python en utilisant OpenCV qui détecte les bords (Canny Edge Detector) à partir des images enregistrées par ma webcam. J'utilise également deux track-bars afin de contrôler les valeurs de seuil (afin de comprendre comment ces valeurs changent la sortie de ce détecteur de front).
Le code que j'ai écrit est le suivant:
import cv2
import numpy as np
def nothing(x):
pass
img = np.zeros((300,512,3), np.uint8)
cv2.namedWindow('cannyEdge')
cv2.createTrackbar("minVal", "cannyEdge", 0,100, nothing)
cv2.createTrackbar("maxVal", "cannyEdge", 100,200,nothing)
cap = cv2.VideoCapture(0)
while(True):
minVal = cv2.getTrackbarPos("minVal", "cannyEdge")
maxVal = cv2.getTrackbarPos("maxVal", "cannyEdge")
#capture frame by frame
ret, frame = cap.read()
cv2.imshow('frame', frame)
edge = cv2.Canny(frame,minVal,maxVal)
#display the resulting frame
cv2.imshow('frame', edge)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
#When everything is done, release the capture
cap.release
cv2.destroyAllWindows()
Ce programme est uniquement à des fins éducatives car j'apprends actuellement à utiliser OpenCV.
Chaque fois que j'exécute le programme ci-dessus, le code semble fonctionner correctement mais j'obtiens l'erreur suivante:
GLib-GObject-CRITICAL **: g_object_unref: l'assertion 'G_IS_OBJECT (object)' a échoué
J'ai recherché la raison pour laquelle cette erreur se produit mais je n'ai rien trouvé d'utile. Mon instinct me dit que mon implémentation pour les trackbars est incorrecte et donc cela cause cette erreur.
Les tutoriels que j'ai utilisés sont les suivants:
Quelqu'un sait-il pourquoi cette erreur se produit? Toute aide serait appréciée!
J'utilise Ubuntu 14.04, OpenCV 3.2.0 et Python 2.7.6
Essayez de créer les barres de piste et d'afficher l'image dans la même fenêtre et voyez si l'erreur persiste. Je parie que ça ne devrait pas. Changement: cv2.imshow ('cannyEdge', edge)
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots