Topic: Errore eseguendo openCV + classificatore Cascade [RISOLTO]  (Letto 260 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline 1979gian

  • python unicellularis
  • *
  • Post: 16
  • Punti reputazione: 0
    • Mostra profilo
Salve a tutti,
avrei un quesito e spero possiate aiutarmi.
Ho eseguito questo codice:

import os
import cv2

# Load the cascade
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# Read the input image
img = cv2.imread('foto1.jpg')
# Convert into grayscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Detect faces
faces = face_cascade.detectMultiScale(gray, 1.1, 4)
# Draw rectangle around the faces
for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
# Display the output
cv2.imshow('img', img)
cv2.waitKey()


Ma mi ritorna questo errore:

OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /build/opencv-L65chJ/opencv-3.2.0+dfsg/modules/imgproc/src/color.cpp, line 9748
Traceback (most recent call last):
  File "/home/pi/CV/h.py", line 9, in <module>
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.error: /build/opencv-L65chJ/opencv-3.2.0+dfsg/modules/imgproc/src/color.cpp:9748: error: (-215) scn == 3 || scn == 4 in function cvtColor


qualcuno sa di cosa si tratta?

Gianluca
« Ultima modifica: Maggio 11, 2020, 21:40 da 1979gian »

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.154
  • Punti reputazione: 9
    • Mostra profilo
Re:Errore eseguendo openCV + classificatore Cascade
« Risposta #1 il: Maggio 08, 2020, 22:36 »
Probabilmente quella path non è valida. O è un baco del compilatore.

Offline 1979gian

  • python unicellularis
  • *
  • Post: 16
  • Punti reputazione: 0
    • Mostra profilo
Re:Errore eseguendo openCV + classificatore Cascade
« Risposta #2 il: Maggio 09, 2020, 00:47 »
Ciao ,
grazie per la risposta, ti racconto.
Non sono un esperto ma per quello che ho capito ti posso dire che 'foto1.jpg' e 'haarcascade_frontalface_default.xml' si trovano nella stessa cartella di default di lavoro.
Sto usando un Raspberry e normalmente la cartella di lavoro di default è /home/pi
Quando inserisco i miei files qui non devo inserire il percorso, ma specificare solo quale file mi interessa.

In altri codici ho fatto lo stesso e non ho mai avuto problemi..quindi sono abbastanza fiducioso che il problema non risieda nel percorso.

Grazie comunque :ok:

« Ultima modifica: Maggio 09, 2020, 01:08 da 1979gian »

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.154
  • Punti reputazione: 9
    • Mostra profilo
Re:Errore eseguendo openCV + classificatore Cascade
« Risposta #3 il: Maggio 09, 2020, 18:15 »
dipenderà dalla tua directory corrente.... non so, dubito che tu abbia già trovato un baco nel compilatore solo copiando il codice del tutorial... ricontrolla la posizione dei tuoi file...

Offline 1979gian

  • python unicellularis
  • *
  • Post: 16
  • Punti reputazione: 0
    • Mostra profilo
Re:Errore eseguendo openCV + classificatore Cascade
« Risposta #4 il: Maggio 11, 2020, 21:38 »
Ciao RicPol,
grandissimo..avevi proprio ragione sai?
Opencv necessitava  tutta la path.
A dire il vero ci avevo già provato..ma mi dava errore.
Questo perchè, mi sono accorto, che omettevo lo "/" all' inizio del percorso.

('/home/pi/haarcascade_frontalface_default.xml') GIUSTO
('home/pi/haarcascade_frontalface_default.xml') SBAGLIATO

Grazie di tutto e buon lavoro :ok:

Gianluca


« Ultima modifica: Maggio 11, 2020, 21:42 da 1979gian »

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.154
  • Punti reputazione: 9
    • Mostra profilo
Re:Errore eseguendo openCV + classificatore Cascade [RISOLTO]
« Risposta #5 il: Maggio 12, 2020, 10:09 »
No, per niente. Opencv non "necessita" di "tutta" la path. Ci mancherebbe altro. Opencv ha bisogno della path *corretta*, come ogni libreria che deve accedere a una risorsa esterna. E puoi fornire una path *assoluta* oppure una path *relativa*, l'importante è che la path punti correttamente al file che devi aprire.

Il problema è che non ti è chiaro:
- che cosa è una path assoluta
- che cosa è una path relativa
- che cosa è la directory corrente

Purtroppo senza queste conoscenze di base sul file system NON E' POSSIBILE PROGRAMMARE. Fine della storia. Qualunque stupido corso su YT, o robaccia simile, ti faccia credere il contrario (programma in Python, che è "facile"!!!!!) ti sta prendendo in giro. Python è difficile, e non ci sono modi per impararlo se non partendo dalle basi con molta molta pazienza.

Guarda, ho appena finito di scrivere un libro che parla proprio di queste cose, e di tutti i problemi che uno può avere ad usare Python nella vita di tutti i giorni. E' dedicato agli utenti Windows, perché tradizionalmente sono loro quelli che non sanno come si usa una shell... Ma quasi ti direi che ti conviene comprarlo anche tu, l'ottanta per cento di quello che scrivo lì in realtà può essere adattato anche a Linux senza problemi.
https://leanpub.com/pythoninwindows