Implementazione robot su 4 ruote con telecamera ed OpenCV
Salve, sto cercando di implementare un robot su 4 ruote comandato da un Raspberry pi 3B collegatoa telecamera e getito da un programma basato su opencv.
Lo scopo del robot per il momento è quello di distinguere la differenza tra una porta chiusa o aperta;
in questo secondo caso deve oltrepassarla oppure fermarsi se chiusa.
Sto studiando il tutorial delle opencv. Ho scritto del codice che legge dalla telecamera attraverso del codice python, passo sucessivo definire i contorni della porta per poi definire lo sfondo.
Riporto il codice e spiego velocemente il problema:
Se lancio il codice con "python Video.py" ottengo il seguente errore dall' interprete:
Sto cercando di dare in pasto l'immagine a colori della telecamera a cv.threshold() poi sucessivamente a cv.findContours() ma mi da errore e non capisco perché: forse incompatibilità degli oggetti in questione.
Scusate l'ignoranza delle opencv ma sono agli inizi.
Mi potete aiutare?
Lo scopo del robot per il momento è quello di distinguere la differenza tra una porta chiusa o aperta;
in questo secondo caso deve oltrepassarla oppure fermarsi se chiusa.
Sto studiando il tutorial delle opencv. Ho scritto del codice che legge dalla telecamera attraverso del codice python, passo sucessivo definire i contorni della porta per poi definire lo sfondo.
Riporto il codice e spiego velocemente il problema:
- Codice: Seleziona tutto
import numpy as np
import cv2 as cv
cap = cv.VideoCapture(0)
if not cap.isOpened():
print("Cannot open camera")
exit()
while True:
# Capture frame-by-frame
ret, frame = cap.read()
# if frame is read correctly ret is True
if not ret:
print("Can't receive frame (stream end?). Exiting ...")
break
# Our operations on the frame come here
gray = cv.cvtColor(frame, cv.COLOR_BGRA2RGBA)
ret,thresh = cv.threshold(gray,127,255,0)
contours,hierarchy = cv.findContours(thresh, 1, 2)
cv.imshow('frame', contours)
if cv.waitKey(1) == ord('q'):
break
cap.release()
cv.destroyAllWindows()
Se lancio il codice con "python Video.py" ottengo il seguente errore dall' interprete:
- Codice: Seleziona tutto
[ WARN:0] global ./modules/videoio/src/cap_gstreamer.cpp (1100) open OpenCV | GStreamer warning: Cannot query video position: status=0, value=-1, duration=-1
Traceback (most recent call last):
File "/home/fabio/Scrivania/Video.py", line 19, in <module>
contours,hierarchy = cv.findContours(thresh, 1, 2)
cv2.error: OpenCV(4.5.4) ./modules/imgproc/src/contours.cpp:195: error: (-210:Unsupported format or combination of formats) [Start]FindContours supports only CV_8UC1 images when mode != CV_RETR_FLOODFILL otherwise supports CV_32SC1 images only in function 'cvStartFindContours_Impl'
Sto cercando di dare in pasto l'immagine a colori della telecamera a cv.threshold() poi sucessivamente a cv.findContours() ma mi da errore e non capisco perché: forse incompatibilità degli oggetti in questione.
Scusate l'ignoranza delle opencv ma sono agli inizi.
Mi potete aiutare?