Paso 9: Paso de bono: procesamiento de imágenes
Para hacer el proceso de imagen, estoy utilizando SimpleCV y Python. SimpleCV (visión de computadora Simple) está construida sobre la muy popular OpenCV.
Instalar SimpleCV, guardar la imagen roja de las resistencias, luego abrir el SimpleCV consola teclear:
>>image = Image("resistor_image_from_instructables.jpg") #file or URL >>hue_dist_img = image.hueDistance(0) #How unlike red is the colour >>hue_dist_img.show()
Debería ver que el fondo rojo ha negro y las resistencias son de color blancas. Con éxito estamos diferenciando las resistencias del fondo.
Y ahora para la versión más completa, que en realidad encuentra las resistencias.
>>image = Image("resistor_image_from_instructables.jpg") #file or URL >>hue_dist_img = image.hueDistance(0) #How unlike red is the colour >>resistor_zones_img = hue_dist_img.binarize() #turn into binary image >>resistor_zones_img = resistor_zones_img.erode().dilate() #remove specks of noise >>resistor_blobs = resistor_zones_img.invert().findBlobs() #segment image >>for b in resistor_blobs: >> print "Area = "+str( b.area())+ " Centroid = (%.1f, %.1f)" %b.centroid() >>resistor_blobs.show(width=3)#show the blobs, with a 3 pixel green border
El resultado final son "blobs". Éstos contienen información sobre la posición de los elementos detectados en la imagen.
Estas manchas podrían utilizarse para tareas como localizar el texto para leer el valor de la resistencia de forma automática mediante OCR, para medir el tamaño de la resistencia o a un robot para recoger la resistencia.