Como crear tu propio DETECTOR DE OBJETOS con Haar Cascade | Python y OpenCV
¿Recuerdas que habíamos detectado rostros dentro de una imagen y video con ayuda de haar cascades en posts anteriores? Si no lo has visto o no lo recuerdas puedes echarle un ojo a este post: ? DETECCIÓN DE ROSTROS ? con Haar Cascades Python – OpenCV. En aquel tutorial debíamos usar un archivo .xml que contenía el modelo (pre entrenado) necesario para realizar la detección de rostros. Sin embargo los rostros no son lo único que muchas veces se desea detectar para distintos proyectos, es entonces cuando es necesario crear un detector de objetos personalizado, pero ¿cómo hacerlo?, el tutorial de hoy voy a enseñarte paso a paso como realizar un detector de objetos usando haar cascades con ayuda del software Cascade Trainer Gui. ¿Empezamos?.
CONTENIDO
- Cascade Trainer GUI
- Instalar Cascade Trainer GUI
- Preparando los datos para el entrenamiento
- Entrenamiento del clasificador en cascada
- ¿Cuál es el siguiente paso luego de que se ha completado el entrenamiento?
- Probando el detector de objetos
- Referencias
Cascade Trainer GUI

Figura 1: Logo de Cascade Trainer GUI.
Según el sitio web de su creador, Cascade Trainer GUI es un programa que ofrece una interfaz gráfica, la cual facilita el uso de herramientas de OpenCV para el entrenamiento y prueba de clasificadores. Este programa ofrece entrenar, probar y mejorar modelos de clasificadores en cascada.
Un aspecto a tener en cuenta es que este programa únicamente puede usarse en Windows, por lo que si estás usando otro sistema operativo necesitarás seguir el tutorial de OpenCV para el entrenamiento de clasificadores en cascada.
Por cierto, a pesar de que este programa cuenta con muchas opciones de uso, en este tutorial solo me centraré en el apartado de entrenamiento Train.
Instalar Cascade Trainer GUI
Para realizar la instalación debes dirigirte al link: https://amin-ahmadi.com/cascade-trainer-gui/, allí podrás encontrar una guía de usuario, con: introducción, instalación, uso y finalmente el apartado de descarga, en donde podrás elegir el ejecutable ya sea para Windows x86 o Windows x64.

Figura 2: Ejecutables de descarga de Cascade Trainer GUI.
Una vez descargado, deberás seguir los pasos de la ventana de instalación.
Preparando los datos de entrenamiento
Para realizar el entrenamiento será necesario contar con gran cantidad (cientos o miles) de imágenes en donde esté presente el objeto que deseemos detectar (conjunto de muestras positivas) y otro conjunto de imágenes donde NO esté presente dicho objeto (conjunto de muestras negativas). Estas imágenes no deben ser muy grandes, ya que esto podría provocar lentitud en la detección.
Para este tutorial trataré de detectar un muñeco de Majin Boo, por lo que necesitaré tomar imágenes donde aparezca (imágenes positivas) y otras donde no esté presente este muñeco (imágenes negativas).

Figura 3: Imágenes positivas y negativas recolectadas para el entrenamiento.
Toma en cuenta además, que para obtener mejores resultados de detección, las imágenes de entrenamiento deben tener la mayor variedad posible, tomando en cuenta el ambiente en donde va a trabajar el detector.
NOTA: Tal vez te estés preguntando por la cantidad exacta de imágenes tanto negativas como positivas para poder llevar a cabo el entrenamiento del clasificador, pero en realidad no hay una receta para determinar dicha cantidad. Entonces ¿cuántas imágenes debo usar en un principio?, pues bien, lo que te podría recomendar es que experimentes con unos cientos en un principio y conforme a los resultados que obtengas, podrías ir agregando más (claro que si tienes un conjunto de datos bastante grande, mejor).
Para realizar el entrenamiento en Cascade Trainer GUI, necesitaremos tener las imágenes positivas y negativas almacenadas en dos carpetas ‘p’ y ‘n’ respectivamente.

Figura 4: Imágenes positivas y negativas deben estar almacenadas en carpetas llamadas ‘p’ y ‘n’ para usar Cascade Trainer GUI.
Como te decía, en este tutorial voy a estar usado como objeto a detectar un muñeco de Majin boo, entonces procedamos a preparar las imágenes positivas y negativas para el entrenamiento, por lo que crearé un programa (capturandoObjetos.py) que nos ayude con esta tarea.
import cv2 import numpy as np import imutils import os Datos = 'p' if not os.path.exists(Datos): print('Carpeta creada: ',Datos) os.makedirs(Datos) cap = cv2.VideoCapture(0,cv2.CAP_DSHOW) x1, y1 = 190, 80 x2, y2 = 450, 398 count = 0 while True: ret, frame = cap.read() if ret == False: break imAux = frame.copy() cv2.rectangle(frame,(x1,y1),(x2,y2),(255,0,0),2) objeto = imAux[y1:y2,x1:x2] objeto = imutils.resize(objeto,width=38) #print(objeto.shape) k = cv2.waitKey(1) if k == ord('s'): cv2.imwrite(Datos+'/objeto_{}.jpg'.format(count),objeto) print('Imagen guardada:'+'/objeto_{}.jpg'.format(count)) count = count +1 if k == 27: break cv2.imshow('frame',frame) cv2.imshow('objeto',objeto) cap.release() cv2.destroyAllWindows()
Línea 1 a 4: Importamos OpenCV, numpy, imutils y os.
Línea 6 a 9: Como hemos hecho en tutoriales anteriores, crearemos una carpeta llamada p, para almacenar las imágenes positivas, luego haremos el mismo procedimiento para la carpeta n en donde se almacenarán las imágenes negativas.
Línea 11: Indicamos que realizaremos un video streaming. Si llegas a obtener problemas con esta línea por los parámetros puedes cambiarla por: cap = cv2.VideoCapture(0)
.
Línea 13 y 14: Establecemos los valores correspondientes a las coordenadas de un rectángulo. Lo que quiero lograr aquí es dibujar un rectángulo en el centro de la pantalla para ir guardando imágenes que se encuentren dentro de este rectángulo, en el caso de las imágenes positivas estaremos almacenando imágenes de Majin boo. Estas coordenadas podrán ser modificadas de acuerdo al objeto que desees identificar.

Figura 5: Visualización del rectángulo dibujado en el centro de la imagen.
Línea 16: Iniciamos un contador que nos ayudará con el nombre de las imágenes a ser almacenadas.
Línea 19 a 22: Leemos cada fotograma, luego en la línea 21 tomamos una copia de frame
que se almacenará en imAux
, mientras que en 22 dibujamos un rectángulo con las coordenadas de las líneas 13 y 14.
Línea 24 y 25: Recortamos de imAux
la región contenida dentro del rectángulo dibujado, esta imagen se almacenará en la variable objeto
. ¿Recuerdas que habíamos dicho que las imágenes de entrenamiento deben ser pequeñas?, pues bien vamos a redimensionar objeto
a un ancho de 38 pixeles y por lo tanto un alto de 46 (puedes cambiar estos valores de redimensionamiento).
Línea 26: Si des comentamos esta línea podremos imprimir el alto, ancho y la cantidad de canales que contiene objeto
.
Línea 29 a 32: Cuando presionemos la tecla s, se almacenará en la carpeta p o n la imagen contenida en objeto
, esta tendrá un nombre llamado ‘objeto’, seguido del valor de count
. También se imprimirá un mensaje en consola, con el nombre de la imagen guardada. En la línea 32 aumentamos en 1 a count
.
Línea 33 y 34: Si se presiona ESC, el bucle se romperá.
Línea 36 a 40: Visualizamos frame
y objeto
. Y luego de realizado el proceso podremos liberar la captura del video streaming y cerrar todas las ventanas.

Figura 6: Algunas imágenes positivas y negativas almacenadas en las carpetas p y n.
Este programa (capturandoObjetos.py) nos servirá para capturar tanto las imágenes positivas como negativas, en mi caso he almacenado 40 imágenes positivas y 350 negativas, todas estas imágenes con 38 pixeles de ancho y 46 de alto.
Entrenamiento del clasificador en cascada
Una vez que tenemos las imágenes listas para el entrenamiento, nos dirigimos al programa Cascade Trainer GUI, en el tendremos la siguiente ventana:

Figura 7: Cascade Trainer GUI, apartado: Train.
A. En esta sección debes seleccionar la carpeta en donde estan contenidas las carpetas p y n.
B. Aquí necesitamos especificar el porcentaje de imágenes positivas a usar, en este caso he establecido 100.
C. Especificamos la cantidad de imágenes negativas a usar para el entrenamiento, en mi caso serían 350.
Luego pasaremos al aparatado Common.

Figura 8: Cascade Trainer GUI, apartado: Common.
En este apartado no modificaré ningún valor, por lo que el número de etapas queda en 20.
Ahora vamos con el apartado Cascade.

Figura 9: Cascade Trainer GUI, apartado: Cascade.
A. Ingresamos el ancho que poseen las imágenes de entrenamiento, en mi caso 38 pixeles.
B. Ingresamos el alto igualmente, de las imágenes de entrenamiento, en mi caso 46 pixeles.
C. Finalmente damos clic en Start y esperamos a que se realice el entrenamiento. En mi caso se tardó aproximadamente 5 minutos.
¿Cuál es el siguiente paso luego de que se ha completado el entrenamiento?
Una vez que se ha completado el entrenamiento, ve a la carpeta donde estaban alojadas n y p, allí vas a poder encontrar nuevos archivos y una carpeta llamada clasiffier.

Figura 10: Nuevos archivos encontrados en la carpeta en donde están n y p.
En la figura 10 podrás ver los nuevos archivos que se han creado luego del entrenamiento. Vamos a usar únicamente la carpeta classifier, por lo que puedes descartar los otros 3 archivos.
Ahora demos un vistazo a lo que hay dentro de la carpeta classifier:

Figura 11: Archivos dentro de la carpeta classifier, creada luego del entrenamiento.
Dentro de classifier vas a encontrar algunos archivos, pero el que vamos a tomar es cascade.xml que corresponde al modelo obtenido luego del entrenamiento, este archivo lo voy a pegar en la carpeta principal en donde estaba n y p, para poder realizar pruebas.
Probando el detector de objetos
Ya tenemos el modelo cascade.xml, es hora de probar nuestro detector. Vamos a desarrollar un programa llamado detectando.py, veamos:
import cv2 cap = cv2.VideoCapture(0,cv2.CAP_DSHOW) majinBooClassif = cv2.CascadeClassifier('cascade.xml') while True: ret,frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) toy = majinBooClassif.detectMultiScale(gray, scaleFactor = 5, minNeighbors = 91, minSize=(70,78)) for (x,y,w,h) in toy: cv2.rectangle(frame, (x,y),(x+w,y+h),(0,255,0),2) cv2.putText(frame,'Majin Boo',(x,y-10),2,0.7,(0,255,0),2,cv2.LINE_AA) cv2.imshow('frame',frame) if cv2.waitKey(1) == 27: break cap.release() cv2.destroyAllWindows()
Este programa es muy similar al que vimos en el post de detección de rostros, por lo que para más profundidad sobre las líneas empleadas, así como los parámetros usados para detectMultiScale, por favor visita ese tutorial.
Línea 5: Vamos a leer el modelo entrenado.
Línea 12 a 13: Todas las dectecciones se almacenarán en toy
, para ello he establecido un valor de scaleFactor de 5, minNeighbors 91, minSize de (70,78), luego de varias pruebas. Te recomiendo usar una barra deslizante o slider para que puedas modificar estos valores conforme estés haciendo pruebas, esto te ahorrará tiempo para que establezcas los mejores valores para tu detector.

Figura 12: Pruebas del detector de objetos.
Como puedes apreciar en la figura 12, aparecen un montón de detecciones, esto lo obtuve usando los parámetros con scaleFactor de 1.3 y minNeighbors 10. Estos resultados podrían abrumarnos, pero al modificar los valores de cada parámetro y al añadir minSize, los resultados mejoraron, ya lo verás a continuación.
Línea 17 a 19: Desempaquetamos la información contenida en toy
, entonces por cada detección tendremos las coordenadas x, y, ancho y alto. Tomaremos esta información para dibujar un rectángulo que rodee el objeto detectado y además añadiremos un nombre, MajinBoo.
Veamos las detecciones:

Figura 13: Detección de Majin Boo usando el modelo entrenado.
Se cumplió con el objetivo de detectar a MajinBoo, sin embargo en ocasiones la detección puede fallar, e incluso pueden aparecer falsos positivos, por lo que hay que recordar que habíamos entrenado con un banco de imágenes pequeño. Conforme realices las pruebas, podrás ir añadiendo más imágenes significativas, es más podrías usar aquellas detecciones de falsos positivos para añadirlas a la carpeta n y volver a entrenar el clasificador.
Y esto ha sido todo por este tutorial, nos vemos en un siguiente :).
Hola, me gusto mucho tu video y quería hacer una consulta. Estoy trabajando en un proyecto de control de asistencia y tengo el problema que puedan marcar con una foto o un video en el celular, se que se puede hacer una prueba de vida ( Liveness o anti Spoofing ) pero soy nuevo en esto y no se como hacerlo, por eso estoy tratando de identificar un objeto ( en este caso un celular con fotos de rostros en el celular ), por lo que tu video me ayudará mucho, pero si sabes de una mejor manera que no se pueda vulnerar la marcación con rostro, por favor dime como, te estaría muy agradecido.
Muchas gracias por tu tiempo
Buena noche, creo es un poco tarde la respuesta pero, podrías trabajar con redes neuronales convolucionales(CNN), tratándolo como un problema d clasificación y generar una clase donde guardes o entrenes solo imágenes de las que comentas, podría ser una solución algo sencilla. Creo que vi un ejemplo de esto en PyImageSearch. Saludos
Buenas como podría generar un programa en openCV y python dónde al dar un clic la imagen rote 30° ya sea a la derecha o a la izquierda
Hola JorgeB, podrías usar cv2.setMouseCallback(), te dejo un link que creo que puede ayudarte: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_gui/py_mouse_handling/py_mouse_handling.html#mouse-handling
Hola, se me genera este error al usar el cascade GUI training:
OpenCV Error: Assertion failed (ssize.width > 0 && ssize.height > 0) in cv::resize, file D:\cv\opencv_3.2.0\sources_withTextModule\modules\imgproc\src\imgwarp.cpp, line 3492
Hola Gabriela, por favor revisa que la imagen que estés usando esté correctamente leída.
Tengo el mismo problema y no logro solucionarlo 🙁
Tengo el mismo problema y no logro solucionarlo 🙁
Hola Azael, prueba con imágenes positivas y negativas del mismo tamaño a ver que pasa.
como se logra eso? sigo sin resolver el problema :,c
Hola, no tengo entendido como emplear la barra deslizante, tendras el codigo para emplearlo porfavor
Hola Hugo claro, puedes ver este tutorial: http://omes-va.com/rostros-borrosos-uso-del-trackbar-opencv-python/
Hola Gaby, soy nuevo en estos temas y me parece interesante…estoy planificando hacer un sistema de reconocimiento de objetos para el control de calidad de un producto. Esto funcionaria a la par con realidad aumentada….es posible realizarlo con un telefono o tablet?
Hola Andrés, en realidad no lo he probado en un teléfono, pero creo que si se podría implementar si usas OpenCV.
Hola, está increíble el programa y me gustaría saber si es posible obtener el contorno de nuestro objeto detectado en lugar de encerrarla en un rectángulo
Hola Yakin, podrías usar la sustracción de imágenes para ese efecto o podrías ir ya por algo más avanzado, realizando entrenamiento.
Genial, porque lo que me interesa es reconocer un objeto para luego medir su área, podría basarme en tu aplicación de detección de movimiento?
Hola Gaby, a mi también me interesa reconocer el contorno del objeto para mediar la distancia del objeto a la cámara. En ese sentido, te pediría, por favor, que hagas un video para calibrar la cámara y medir la distancia del objeto a la misma.
Gracias por compartir tus conocimientos.
Saludos.
Hola Jerry, muchas gracias por la sugerencia. Por ahora tengo este video que tal vez te pueda servir como referencia: https://www.youtube.com/watch?v=HDFDO1g9Pqk&list=PLBg7GSvtrU2MOLWM0bGU1_FT3LsJPyY-5&index=39&t=0s Espero que sea de ayuda.
Hola Gabriela
Excelente video!!!
¿Qué pasa cuando en la imagen Positiva tienes más de 1 Objeto a identificar?
¿Comó etiquetas a mas de 1 objeto?
Revisando la documentación encontré esto: img/img01.jpg 2 100 200 50 50 50 30 25 25
¿Pero esto como lo metes al programa para hacer el clasificador?
Espero y me leas
Gracias
Hola Carlos, por ahora lo desarrollé para que se pueda guardar una sola imagen del objeto, pero también podrías ayudarte de los eventos del mouse para que puedas seleccionar varias áreas.
Hola, oye seguí tus pasos para realizar esta práctica, soy nueva usando python, pero me marcar un error con el imutils
File «capturandoobjetos.py», line 3, in
import imutils
ModuleNotFoundError: No module named ‘imutils’
no se quéhacer
Hola Daysi, ese error te salta, ya que no al parecer no tienes instalado imutils. Por favor revisa este tutorial: http://omes-va.com/trasladar-rotar-escalar-recortar-una-imagen-opencv/
Hola Gaby, en primer lugar quería felicitarte por todo tu trabajo, es muy bueno. En segundo, quería hacer una pregunta, no entiendo muy bien el por qué el tamaño de la imagen que definiste, y cuáles tamaño se pueden usar en caso de querer capturar objetos de mayor tamaño que no puedan captarse dentro del rectángulo que estableciste en el código. Gracias, un abrazo.
Hola Cristopher, muchas gracias :). Según he leído es mejor trabajar con imágenes pequeñas, puedes darle un vistazo a la web de cascade trainer gui: https://amin-ahmadi.com/cascade-trainer-gui/ allí también dan ciertos consejos para poder entrenar el clasificador.
Bueno para comenzar muy buen trabajo realmente me encantó y bueno como segundo tengo un problema con la ventana de detectando que va muy lento ¿hay alguna manera de mejorarlo o arreglarlo?
Hola Juan muchas gracias :D, podrías redimensionar la imagen o los fotogramas de entrada, también podrías revisar los parámetros que se usan para la detección con estos clasificadores, puedes echarle un ojo a este video: https://youtu.be/J1jlm-I1cTs
Hola, muchas gracias por el contenido de muchas utilidad. Una consulta. este entrenado también funcionaria para objetos mas pequeños? Quiero aplicarlo a en zancudos ,pero antes intentare en objetos mas grandes y veré que tal me va.
Hola Luis, en realidad tendrías que hacer la prueba. Pero yo te recomendaría usar otro clasificador, puedes que a veces haar cascade no sea del todo confiable.
Muchas gracias, por su respuesta, seguiré investigando cual es mas apto para los fines de mi investigación. Muchas gracias y estaré al tanto de su canal por nuevo contenido.
Buenas,
que buen proyecto!!!!
Tengo un problemilla y es que cuando hago muchas capturas para el negativo ( unas 400), el programa me da error de memoria insuficiente. Las fotos tienen un tamaño de 38×96.
Si reduzco el número de fotos y el tamaño, me genera sin problemas el .xml, pero sino me da problemas.
Gracias
Hola David, emmm tal vez podrías realizar la recolección de las imágenes por separado, es decir tal vez de 100 en 100 hasta obtener todas las deseadas.
Hola, tuve el problema de que no estaba instalado imutils y tuve problema para instalar en windows despues de buscar lo que me ayudo fue este comando
import pip
pip.main([‘install’, ‘imutils’])
Muchas gracias Edwin por compartirlo. 🙂
Entonces por ejemplo si voy a hacer una clasificación de objetos en una raspberry, no necesito instalar el programa de Cascade Trainer GUI, y solo importar el archivo que este nos crea al entrenar con las imagenes o si es necesario que este instalado para poderlo correr en python??
Hola Tomás, efectivamente solo tendrías que llevar el archivo generado a la raspberry.
Al utilizar Cascade Trainger GUI me aparece este error :
OpenCV Error: Assertion failed (ssize.width > 0 && ssize.height > 0) in cv::resize, file D:\cv\opencv_3.2.0\sources_withTextModule\modules\imgproc\src\imgwarp.cpp, line 3492
**************************************************
************* TRAINING CLASSIFIER ****************
**************************************************
Running : opencv_traincascade
OpenCV Error: Parsing error (wrong file format for C:\Users\USUARIO\Desktop\MATERIAS
) in CvCascadeImageReader::PosReader::create, file D:\cv\opencv_3.2.0\sources_withTextModule\apps\traincascade\imagestorage.cpp, line 141
¿Cómo puedo solucionarlo? Ayuda :cc
Hola Victor, puede que no se estén leyendo correctamente las imágenes, revisa que el nombre de las imágenes y carpetas no tengan tildes o ñ o cualquier otro carácter especial.
Hola Gaby, muchas gracias por compartir tanto conocimiento. Una consulta ¿se tiene que entrenar siempre con fotografias o es posible entrenar con videos? Digamos una banda transportadora movida por un motor de 1800 rpm. Agradezco tu oportuna orientación…
Hola Abel, con imágenes. Podrías recolectar las imágenes y luego recortarlas para obtener la región de interés y que con ellas puedas entrenar el detector.
Hola, excelente video, se que es algo tarde… pero tengo un par de dudas, tiene que ver algo el formato de imagenes? o sea importa mucho si son JPG o PNG?
y otra cosa, cuando uso el clasificador me dice «que no ha encontrado la carpeta» y la verdad no se porque si se supone que al inicio pide donde estab ubicado la carpeta, y pues no se que podra ser, mis imagenes pues supongo que estan bien, tienen las mismas dimensiones todas y sigo intenta y nada aun. pues seria eso, espero que pueda contestarme
Hola Jonathan, te recomiendo que leas la documentación de la aplicación: https://amin-ahmadi.com/cascade-trainer-gui/
En cuanto a la carpeta, puede que el nombre de esta o el path tenga alguna tilde o carácter que no pueda ser leído correctamente, puedes probar verificando ello.
Yo tuve un problema con imágenes en .png de tamaño 128×128 pixeles: el archivo .xml no se generaba ni comenzaba el entrenamiento. El problema se corrigió cuando cambien el formato a .jpg y un tamaño de 64×64 pixeles. Espero que hayas solucionado tu problema. Saludos.
Posdata: excelente contenido Gabi!
muy interesante el video, me gustaría saber de que manera se pudiera reconocer mas de un objeto
Hola Misael, puedes probar creando distintos clasificadores y luego cargarlos en tu programa.
Hola Gabi, excelente vídeo. Eres mejor que mi maestro!!! jejeje… Estoy iniciando con Python. Quisiera saber si este mismo programa que nos enseñaste a hacer puede ser modificado para que detecte más de un objeto.
Gracias de antemano por compartirnos tus conocimientos.
Hola Adony muchas gracias. 🙂 Podrías crear varios clasificadores y luego usarlos en tu programa.
Hola, oye, tengo una dificultad con este proyecto. He logrado que mi cámara detecte el objeto pero parece que solo lo detecta en la parte central de la pantalla, además, el rectángulo marcado no rodea mi objeto, solo aparece un rectángulo pero no necesariamente en mi objeto. Esto es un problema puesto que quiero que el programa me arroje las coordenadas del centro de mi objeto pero no he podido hacer que lo haga, espero y puedas ayudarme.
Muchas gracias y que tengas bonito día
Hola Ricardo, prueba modificando los parámetros de detectMultiScale. Si en caso no obtienes buenos resultados tal vez necesites más imágenes para entrenar, y si aun así no obtienes buenos resultados, puede que necesites usar otro clasificador diferente al de Haar Cascade.
Hola que tal, solo quería comentar si pudieras hacer tutoriales de como hacer aplicaciones de realidad aumentada con opencv y python.
Muchas gracias por la sugerencia Ross. 🙂
Como te puedo contactar, algún teléfono o email.
hola que tal , disculpa si quiero hacer un clasificador , pero para 4 majinboo en un mismo video .
clasificar 4 objetos en un mismo video .
como seria ?
Tendrías que crear 4 modelos diferentes (xml) para trabajarlos por separado y juntar todo en el frame, o un alternativa puede ser poner diferentes imágenes positivas pero no podrás identificarlas fácilmente,
Buenas noches, disculpen, es que me sale el siguiente error y no sé cómo solucioanrlo.
OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor’
Hola Gabriela, mi nombre es Alex Troncoso, presidente de Jakarta Technologies en Chile.
Primero debo decirle que sigo sus post desde hace algunos meses y me parece interesante su Know How en AI.
Es por esto la contacto y quisiera saber si es posible sostener una meeting por video con usted, para ver posibilidades que nos preste servicio de programación de AI.
mi correo es atroncoso@jakarta.cl, mi movil WSP +56922411235.
Quedo atento a su respuesta.
saludos
Alex.
hola, primero que todo felicitarte por este foro están BKN (chido), y mi duda es la siguiente podría entrenar la red con diversos P, por ejemplo cubicar diversa figura según tamaño?
saludos.,
Buenos días, excelente vídeo, quería preguntar como es el proceso para que me reconozca un lector de huella digital en python y pueda hacer el escaneo de huella?, como seria la entrada?
Hola, Primero que nada felicitarte y agradecerte por tu contribución,
Me gustaría que nos compartieras tu opinión sobre las soluciones que maneja Microsoft , Amazon, Google, TensorFlow sobre la clasificación y detección de objetos.
También me gustaría saber en que grado debemos confiar en un modelo entrenado ya que siempre abra nuevos casos en los que falle. En mi caso estoy probando con un detector de monedas pero aun y cuando tengo el 99.4 % de precisión al finalizar el entrenamiento siempre llega a fallar.
Disculpa y para que me detecte varios objetos las imágenes se tienen que guardar en otro carpeta y hacer otro entrenamiento o de que forma se podría hacer para detección de varios objetos
Te felicito por tu entusiasmo. Al parecer eres autodidacta (también yo lo soy) y te recomiendo el libro Trucco,_Alessandro_Verri-Introductory_techniques_for_3-D_computer_vision-Prentice_Hall(1998)
que version de open cv utiliza?
tengo este error, Traceback (most recent call last):
File «C:/Users/USUARIO/Desktop/detectar persona.py», line 12, in
toy = detector_persona.detectMultiScale(gray,
cv2.error: OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function ‘cv::CascadeClassifier::detectMultiScale’
Hola José. Esto puede deberse a que instalaste opencv con pip install opencv-python. Prueba instalando con: pip install opencv-contrib-python.
hola me sale este error OpenCV Error: Bad argument (Can not get new positive sample. The most possible reason is insufficient count of samples in given vec-file.
) in CvCascadeImageReader::PosReader::get, file D:\cv\opencv_3.2.0\sources_withTextModule\apps\traincascade\imagestorage.cpp, line 158