<jupyter_start><jupyter_text>Entorno de trabajo Puesta en marcha de Python, OpenCV y jupyter notebooks.  Instalación Clonamos [el repositorio](https://github.com/albertoruiz/umucv) con el material de la asignatura:    git clone https://github.com/albertoruiz/umucv.git    En días sucesivos lo iremos actualizando con    git pull    Otra posibilidad es descargar solo [la versión más reciente](https://github.com/albertoruiz/umucv/archive/master.zip):    wget https://github.com/albertoruiz/umucv/archive/master.zip    unzip master.zip  LINUX Descargamos [miniconda](https://conda.io/miniconda.html) para nuestro sistema con python 3 y lo instalamos.    bash Miniconda3-latest-Linux-x86_64.shNos preguntará si queremos inicializar la instalación (sí) y la forma de configurarlo para que los terminales no arranquen automáticamente dentro del entorno base.Una vez instalado hay que cerrar el terminal y abrir otro. Comprobamos que está bien instalado:    conda activate base    (base) usuario @ maquina> python    Python 3.7 Creamos un [entorno de conda](https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html) con todo lo necesario. Hay dos formas  Hay varias formas de hacer esto.1) La más sencilla es descargarnos una versión completa consistente que incluye todos los paquetes necesarios:    wget https://robot.inf.um.es/material/va/via-local.zip        unzip via-local.zip        cd via-local    conda create --name via --file visionreqlocal.txt        conda activate via        bash install-pip.shSi todo ha ido bien puedes borrar el archivo `via-local.zip` y el directorio `via-local` descomprimido.Debe funcionar todo sin mayores problemas, pero tiene versiones de los paquetes que no son recientes y es más difícil actualizarla. 2) Una opción mejor es compilar OpenCV. Requiere más tiempo pero es recomendable para tener un entorno más completo y actualizado.    wget https://robot.inf.um.es/material/va/opencv.tar.gz        unzip opencv.zip        conda create --name viacv        conda activate viacv        conda install numpy        cd opencv/build        bash opencvconfigRevisamos la salida para ver si están las opciones deseadas. (Podemos necesitar alguno de los paquetes indicados en https://robot.inf.um.es/material/va/viacv-apt.txt)    make -j4        make install    Comprobamos que se ha instalado correctamente:    python        import cv2        cv2.__version__    Y completamos la instalación con    pip install pyqtgraph pyqt5 pyopengl    pip install dlib    pip install http://robot.inf.um.es/material/umucv.tar.gz        pip install matplotlib Finalmente podemos añadir al final de nuestro `.bashrc` una orden `conda activate via` para que automáticamente los terminales que abramos estén en el entorno deseado. 3) Descargamos un miniconda especialImportante: dentro de un usuario alumno (en /home/alumno, para que funcione también en el lab)    wget http://robot.inf.um.es/material/va/mcvia.tar.gz    unzip mcvia.tar.gz(Si queremos añadir paquetes lo hacemos como alumno)Añadimos en .bashrc de nuestro usuario:    export PATH=/home/alumno/mcvia/envs/via/bin:$PATH 3) Una imagen docker (en construcción).  WINDOWSInstalamos [anaconda completo](https://www.anaconda.com/distribution/download-section).En anaconda prompt ejecutamos    python -m pip install opencv-python        python -m pip install http://robot.inf.um.es/material/umucv.tar.gz  MACPendiente.  Prueba rápida En primer lugar importamos las bibliotecas necesarias.<jupyter_code>%matplotlib inline

import numpy             as np
import cv2               as cv
import matplotlib.pyplot as plt

from skimage import io<jupyter_output><empty_output><jupyter_text>Para importar una imagen podríamos usar `imread` de opencv. El problema es que intercambia los canales R y B:<jupyter_code>img = cv.imread('../images/coins.png')
print(type(img))
print(img.shape)
#print(img)
plt.imshow(img)
plt.axis('off');<jupyter_output><empty_output><jupyter_text>Para arreglarlo usamos la función que convierte espacios de color.<jupyter_code>plt.imshow(cv.cvtColor(img,cv.COLOR_BGR2RGB));<jupyter_output><empty_output><jupyter_text>Podemos intercambiar los canales aprovechando las posibilidades de indexado de arrays de numpy:<jupyter_code>plt.imshow(img[:50,400:500,[2,1,0]]);<jupyter_output><empty_output><jupyter_text>Pero es más sencillo usar `imread` de skimage, que además puede leer de url remotas.<jupyter_code>path = "http://robot.inf.um.es/material/va/images/"

view = io.imread(path+"plate.jpg")
plt.imshow(view);
plt.imshow(io.imread("../images/monty-python1.jpg"));<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.08355034722222222, 'fraction_numerical': 0.006510416666666667, 'mean_word_length': 4.261415525114155, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 22, 'https://': 10, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '429286', 'license': 'BSD-3-Clause', 'n_tokens_mistral': 1569, 'n_tokens_neox': 1528, 'n_words': 457, 'path': 'notebooks/install.ipynb', 'repo_name': 'hidsor/umucv', 'size': '4608'}