Ich versuche, Konturen in Python mit cv2 zu lernen.
Ich habe den folgenden Code aus einer Tutorial-Anleitung ausprobiert:
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)
Ich erhalte diesen Fehler:
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
es besagt, dass Ihr Eingabebild 3 oder 4 Kanäle haben sollte, bevor Sie die Funktion cv2.cvtColor
anwenden.
Überprüfen Sie daher Ihre Bildform, bevor Sie die Funktion mit print im.shape
anwenden. Wenn das Ergebnis None type
ist (meistens ist dies das Problem), wird das Bild nicht korrekt geladen, wahrscheinlich weil der Pfad nicht korrekt ist.
punkt ist, dass Ihr Bild 3 Dimensionen, Zeilen, Spalten und Tiefe haben sollte.
1. Druck ret . Wenn "false" angezeigt wird, wird das Bild nicht ordnungsgemäß aufgenommen . Wenn "True" angezeigt wird, versuchen Sie diesen Befehl - Sudo modprobe bcm2835-v4l2 Oder fügen Sie in Ihrer Datei/etc/modules bcm2835 hinzu -v4l2 am unteren Rand.
Wenn Sie diesen Fehler auf einem Raspberry Pi mit einer PI-Kamera erhalten, führen Sie zuerst diesen Befehl aus:
Sudo modprobe bcm2835-v4l2