IT-Swarm.Net

Python-OpenCV cv2 OpenCV-Fehler: Assertion fehlgeschlagen (scn == 3 || scn == 4) in unbekannter Funktion, Datei ..\..\..\modules\imgproc\src\color.cpp

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
24

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.

84
Abid Rahman K

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.

1
Argha Sen

Wenn Sie diesen Fehler auf einem Raspberry Pi mit einer PI-Kamera erhalten, führen Sie zuerst diesen Befehl aus:

Sudo modprobe bcm2835-v4l2
0
Xerxel