OpenCV Python
Algaba Borrego, Miguel
Fernndez Gersol, Jernimo
Llamas Iniesta, Jaime
Python
Python
Lenguaje de programacin de alto nivel.
Surge a finales de los aos 80 (Guido Van
Rossum) como sucesor del lenguaje ABC.
Su nombre proviene de la
aficin de su creador por los
Monthy Python.
3
Python
El objetivo de Guido era cubrir la
necesidad de un lenguaje orientado a
objetos de sencillo uso que sirviese
para tratar diversas tareas dentro de
la programacin que habitualmente
se haca en Unix usando C.
Actualmente trabaja en Zope, una plataforma de
gestin de contenidos y servidor de aplicaciones
para el web, por supuesto, programada por
completo en Python.
Python
Es un lenguaje interpretado, no es necesario
compilar el cdigo fuente para ejecutarlo.
En los ltimos aos se ha hecho popular:
Gran cantidad de libreras, tipos de datos y
funciones que contiene.
Sencillez y rapidez para crear programas. Puede
tener de 3 a 5 lneas de cdigo menos que C o
Java por cada 10 lneas.
Es gratuito para propsitos empresariales.
Python
Conclusin:
Python se encuentra en movimiento y pleno
desarrollo, pero ya es una realidad para realizar
todo tipo de programas que se ejecuten en
cualquier mquina.
Algunas de las empresas que utilizan Python son
Google, Yahoo, la NASA, Walt Disney
Aunque la documentacin de este lenguaje se
encuentra en Ingls, su creciente popularidad hace
que vayan apareciendo los primeros tutoriales en
lenguaje hispano.
Caractersticas
Lenguaje de programacin multiparadigma.
Programacin orientada a objetos.
Programacin imperativa.
Programacin funcional.
Dinmicamente tipificado.
Informacin menos explcita en el cdigo.
Verificaciones en tiempo de ejecucin.
7
Caractersticas
Recoleccin de basura.
CPython
Es la implementacin ms usada.
Est escrita en C.
Soporta mltiples plataformas (Linux, Solaris, Mac
OS X, Windows, BSD, ).
Provee una API para el lenguaje C lo que supone
hacer este lenguaje fcilmente extensible
(mdulos C y C++).
8
Caractersticas
Filosofa anloga a Unix.
Cdigo pythnico.
Principios:
Simple es mejor que complejo.
La legibilidad cuenta.
Ahora es mejor que nunca.
Los casos especiales no son tan especiales como
para quebrantar las reglas.
Elementos del lenguaje
Python fue diseado para ser ledo con
facilidad.
El contenido de los bloques de cdigo (bucles,
funciones, clases, etc..) es declarado mediante
espacios o tabuladores (identacin).
10
Elementos del lenguaje
Tipos de datos
Tipo
Clase
Notas
Ejemplo
int
Entero
Nmero entero
30
float
Decimal
Coma flotante
3.1416
bool
Booleano
Valor verdadero o falso
True, False
str
Cadena
Inmutable
Hola
list
Secuencia
Mutable
[3.0, Hola]
tuple
Secuencia
Inmutable
(3.0,Hola)
set
Conjunto
Mutable, sin orden, sin duplicados
Set([3.0,Hola])
frozenset
Conjunto
Inmutable, sin orden, sin duplicados
Frozenset([3.0,Hola])
11
Elementos del lenguaje
Listas y tuplas:
Las listas se caracterizan por ser mutables, es
decir, pueden cambiar su contenido en tiempo
de ejecucin, mientras que las tuplas son
inmutables.
LISTA = [ elementos* ]
TUPLA = ( elementos* )
12
Elementos del lenguaje
Diccionarios (mapping):
Contienen elementos separados por comas,
donde cada elemento est formado por un par
clave:valor . Los valores son mutables pero no
as sus claves.
MAPPING = { clave:valor * }
13
Elementos del lenguaje
Conjuntos:
Se construyen mediante set(items) donde items
es cualquier objeto iterable, como listas o
tuplas. Los conjuntos no mantienen el orden ni
contienen elementos duplicados.
CONJUNTO = set([(lista | tupla)*])
14
Elementos del lenguaje
Listas por comprensin:
Acumulan en una lista los valores generados por
expresiones generadoras. La sintaxis de una lista
por compresin es:
[ expresin de los elementos | expresin generadora ]
15
Funciones
Las funciones definen mediante la palabra
clave def, seguida del nombre de la funcin y
sus parmentros.
Otra forma de escribir funciones es mediante
la palabra clave lambda (como en LISP).
El valor devuelto ser el que indique la
instruccin return.
16
Clases
Las clases se definen mediante la palabra clave
class, seguida del nombre la clase y, si hereda de
otra clase, el nombre de esta.
De forma parecida a otros lenguajes de
programacin donde existen restricciones de
acceso a una variable o mtodo, en Python se
utilizan las barras bajas __ antes del nombre
para indicar la privacidad (funciones) y la palabra
reservada self (propiedades).
17
Mdulos
Existen muchas propiedades que se pueden
agregar al lenguaje importando mdulos, que
son "minicdigos" (la mayora escritos
tambin en Python) que proveen de ciertas
funciones y clases para realizar determinadas
tareas.
Import os ([Link])
Import tkInter
Import time ([Link])
18
Core y Highgui
Core
Basic Structures
Operations on Arrays
Dynamic Structures
Drawing functions
XML/YAML Persistence
Clustering
Utility and System Functions and Macros
Basic Structures
CvPoint y variantes
CvPoint 2D32f, CvPoint3D32f, CvPoint2D64f, CvPoint3D64f
CvSize
CvRect
CvScalar
CvArr, CvMat, IplImage
CvTermCriteria
Operations on Arrays
Operaciones aritmticas (Add, Sub, Mul, Div,
Pow, Sqrt)
Operaciones lgicas (Not, And, Or, Xor)
Operaciones de transformacin
Lineales (ConvertScale, ConvertScaleAbs)
No Lineales (PerspectiveTransform, DCT, DFT)
Otras:
EigenVV, LUT, Flip, Inv, Round, SolveCubic, Split
Operations on Arrays
Dynamic Structures
CvMemStorage
CvSeq
CvSet
CloneSeq
CreateMemStorage
SeqInvert
SeqRemove
SeqRemoveSlice
Drawing Functions
Dibujado geomtrico:
Circle, Ellipse, Line, PolyLine, Rectangle
Texto:
InitFont, PutText, GetTextSize
Funciones complejas:
DrawContours, FillConvexPoly
XML/YAML Persistence
til para guardar/cargar archivos de
configuracin en/desde ficheros XML/YAML.
Load
Save
Clustering
Kmeans 2
Funcin que implementa un algoritmo k-means.
Highgui
Mdulo de interfaces grficas de usuario y
componentes multimedia.
Compatible en el uso con frameworks ms
complejos de interfaces grficas.
Se compone de dos submdulos principales:
User Interface
Reading and Writing Images and Video
User Interface
CreateTrackbar, GetTrackbarPos,
SetTrackbarPos
DestroyWindow, DestroyAllWindows
NamedWindow, MoveWindow, ResizeWindow
SetMouseCallback
ShowImage
WaitKey
Reading and Writing Images and Video
LoadImage, LoadImageM, SaveImage
CvCapture, CaptureFromCAM,
CaptureFromFile, GetCaptureProperty,
SetCaptureProperty
GrabFrame, RetrieveFrame, QueryFrame
CreateVideoWriter, WriteFrame
Reading and Writing images and Video
Reading and Writing images and Video
Image Processing
Image Processing
Histograms
Image Filtering
Geometric Image Transformations
Miscellaneous Image Transformations
Structural Analysis and Shape Descriptors
Feature Detection
Histograms
Clculo del histograma
Comparacin de
histogramas
Mnimos y mximos del
histograma
Umbralizacin del
histograma
Image Filtering
Incluye funciones y clases
para aplicar filtros lineales
y no lineales
Filtros de convolucin 2D
Paso alta/baja (Laplace,
Sobel, Gauss, )
Operaciones con
elementos estructurantes
Dilatacin/Erosin
Apertura/Cierre
Image Filtering
Geometric Image Transformations
Incluye funciones que aplican
transformaciones geomtricas a
las imgenes
Transformaciones Eucldeas
Rotacin, Traslacin, Matriz de
rotacin,
Transformaciones afines
Escalado de ejes, Matriz de
transformacin afn,
Transformaciones proyectivas
Perspectiva, Matriz proyectiva,
Geometric Image Transformations
Miscellaneous Image Transformations
Cambiar entre espacios de
color
RGB-GRAY, RGB-HSV,
Componente conexa
Clculo de componente
conexa, Rellenado por
inundacin,
Segmentacin
Piramidal, Umbralizacin,
Miscellaneous Image Transformations
Structural Analysis and Shape
Descriptors
Extraccin de contornos
Aproximacin poligonal
Clculo del permetro de un contorno
Clculo del rea interior de un
contorno
Clculo del rectngulo de
recubrimiento
Clculo de envolvente convexa
Clculo del centroide
Clculo de los momentos de Hu
Structural Analysis and Shape
Descriptors
Feature Detection
Deteccin de bordes
Operador de Canny
Deteccin de
esquinas
Operador de Harris
Deteccin de rectas
Transformada de
Hough
Feature Detection
GRACIAS POR VUESTRA ATENCIN
Image Processing: Demos
Referencias
Documentacin de Python:
[Link]
Descripcin general de CPython:
[Link]
Pequeo tutorial de Python
[Link]
equeno_tutorial_de_Pyhton.html
48
Referencias
Documentacin OpenCV 2.2 Python:
[Link]
Imgenes:
[Link]
a
Enlaces interesantes
Python en Google
[Link]
Python en Walt Disney
[Link]
n/news/disney_0201.html