Ich mache gerade Echtzeit-Objekterkennung eines orangen Balls mit Raspberry Pi 3 Model B. Der Code unten soll einen Frame nehmen, dann mit dem cv2.inRange() Funktion, filtern Sie das Bild mit RGB (BGR). Dann wende ich Dialerung und Erosion an, um Rauschen zu entfernen. Dann finde ich die Konturen und zeichne sie. Dieser Code hat bis jetzt funktioniert. Jedoch, wenn ich es ohne Änderung es heute lief, habe ich den Folowing Fehler:Python OpenCV: inRange() funktioniert nicht mehr ohne Änderung
Traceback (most recent call last):
File "/home/pi/Desktop/maincode.py", line 12, in <module>
mask = cv2.inRange(frame, lower, upper)
error: /build/opencv-ISmtkH/opencv-2.4.9.1+dfsg/modules/core/src/arithm.cpp:2701: error: (-209) The lower bounary is neither an array of the same size and same type as src, nor a scalar in function inRange
Jede Hilfe wäre wirklich genial, weil ich zu OpenCV neu war und viel Zeit proggraming dies verbracht, und ich habe eine competetion der Robotik in 5 Tagen.
Vielen Dank im Voraus
import cv2
import cv2.cv as cv
import numpy as np
capture = cv2.VideoCapture(0)
while capture.isOpened:
ret, frame = capture.read()
im = frame
lower = np.array([0, 100 ,150], dtype = 'uint8')
upper = np.array([10,180,255], dtype = 'uint8')
mask = cv2.inRange(frame, lower, upper)
eroded = cv2.erode(mask, np.ones((7, 7)))
dilated = cv2.dilate(eroded, np.ones((7, 7)))
contours, hierarchy = cv2.findContours(dilated,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(im,contours,-1,(0,255,0),3)
cv2.imshow('colors',im)
cv2.waitKey(1)
Sind Sie sicher, dass der Rahmen, den Sie in 'mask = cv2.inRange (frame, lower, upper) einspeisen' nicht leer ist? Versuchen Sie 'frame.shape' vor dieser Anweisung auszudrucken. – ZdaR