J'essaie d'apprendre les contours en python avec cv2.
J'ai essayé le code suivant donné dans un guide de tutoriel:
import cv2
import numpy as np
from matplotlib import pyplot as plt
im = cv2.imread('C:\Users\Prashant\Desktop\test.jpg')
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,0)
image, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
img = cv2.drawContour(im, contours, -1, (0,255,0), 3)
cv2.imshow('Image1',img)
Je reçois cette erreur:
File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 540, in runfile
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in unknown function, file ..\..\..\modules\imgproc\src\color.cpp, line 3402
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
execfile(filename, namespace)
File "C:/Users/Prashant/.spyder2/.temp.py", line 15, in <module>
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
cv2.error: ..\..\..\modules\imgproc\src\color.cpp:3402: error: (-215) scn == 3 || scn == 4
il indique que votre image d'entrée doit avoir 3 ou 4 canaux avant d'appliquer la fonction cv2.cvtColor
.
vérifiez donc la forme de votre image avant d'appliquer la fonction avec print im.shape
. Si le résultat est None type
(la plupart du temps, il s'agit du problème), votre image n'est pas chargée correctement, probablement parce que votre chemin n'est pas correct.
le point est que votre image doit avoir 3 dimensions, lignes, colonnes et profondeur.
1ère impression ret . Si elle indique false, votre image n'est pas prise correctement . Si elle est vraie, essayez cette commande - Sudo modprobe bcm2835-v4l2 .__ ou dans votre fichier/etc/modules, ajoutez bcm2835 -v4l2 en bas.
Si vous obtenez cette erreur sur une caméra Raspberry Pi avec PI, essayez d’exécuter cette commande en premier:
Sudo modprobe bcm2835-v4l2