Tutorial de OpenCV escrito en C++ dentro de ROS con la intensión de facilitar el trabajo a los nuevos programadores.
Se considera que la computadora del usuario ya tiene correctamente instalado ROS, GIT y que ya tiene la carpeta de catkin_ws
correctamente inicializada.
Para asegurarse que se tiene un dispositivo de video, ejecutar en una Terminal:
cheese
Deberá de ver la imagen de la cámara. En caso contrario significa que no tiene una cámara de video correctamente instalada.
Para asegurarse que se tiene correctamente instalado OpenCV, ejecutar la siguiente instrucción en una Terminal:
pkg-config --modversion opencv
Debe responder con la versión de OpenCV. En caso que no tenga instalado OpenCV, ejecutar:
sudo apt-get install ros-kinetic-vision-opencv libopencv-dev python-opencv
En una Terminal ejecutar las siguientes instrucciones:
cd ~/catkin_ws/src
git clone https://github.com/aaceves/opencv_tutorial.git
cd ~/catkin_ws
catkin build
source devel/setup.bash
El proceso de compilación debe terminar sin errores.
Se habrán dado de alta los siguientes nodos:
<node_name> | Descripción | ./src/file |
---|---|---|
showGray | Lee un archivo jpg y lo pasa a grises | toGray.cpp |
showSegmentation | Segmenta la imagen de la webcam en HSV | simpleColorSegmentation.cpp |
spaceColors | Segmenta webcam en diferentes espacios de color | differentColorSegmentation.cpp |
showEdges | Busca bordes de la imagen de la webcam | detectEdges.cpp |
showDrawings | Dibuja geometrías sobre una imagen | drawOnImage.cpp |
clickMe | Como definir un simple boton | clickMe.cpp |
showHist | Calcular histogramas | computeHistogram.cpp |
readWriteFile | Guardar y leer datos de un archivo | readWriteFile.cpp |
showBlobs | Agrupar pixels conectados | showBlobs.cpp |
showVideo | Lee y guarda video | readWriteVideo.cpp |
cropMergeWrite | Crop, Write, Add, Split, Merge en una image | cropMergeWrite.cpp |
ballTracking | Buscar pelota dentro de alfombra verde | detectBall.cpp |
faceDetectionHaar | Detecta caras usando HAAR features | detectFaces.cpp |
showTime | Varias formas de medir el tiempo de un proceso | measureTime.cpp |
opticalFlow | Calcula el flujo óptico en un video o webcam | opticalFlow.cpp |
tracking | Busca un objeto usando el algoritmo de Lucas-Kanade | tracking.cpp |
detectMouse | Detecta los eventos del mouse dentro de una image | detectMouse.cpp |
showSiftFeat | Buscar y mostrar SIFT features | ???.cpp |
En dos Terminales diferentes ejecutar cada una de las siguientes lineas:
roscore
rosrun opencv_tutorial <node_name>
Este paquete fue desarrollado a partir de programas de OpenCV disponibles en Internet, pero ajustados ligeramente por el Dr. Alejandro Aceves-López para que sean más comprensibles a los programadores nuevos de ROS.
- Anónimo, "OpenCV Tutorials ", [Online]. Available: https://docs.opencv.org/3.2.0/d9/df8/tutorial_root.html, [Accessed: 05-Jun-2018].
- Fernando Shermal, "OpenCV Tutorial C++ ", [Online]. Available: https://www.opencv-srf.com/p/introduction.html, [Accessed: 05-Jun-2018].
- Sergio Cantu, “Loading images – OpenCV 3.4 with python 3 Tutorial 1-37”, [Online]. Available: https://pysource.com/2018/01/20/loading-images-opencv-3-4-with-python-3-tutorial-1/#, [Accessed: 05-Jun-2019].
- Sergio Cantu, “Computer Vision Made Simple”, [Online]. Available: https://pysource.com/, [Accessed: 05-Jun-2019].
- OpenCV Team, “OpenCV - Open Source Computer Vision Library”, [Online]. Available: https://opencv.org/, [Accessed: 05-Jun-2018].
- Satya Mallick, "Learn OpenCV by Examples", [Online]. Available: http://opencvexamples.blogspot.com/p/learning-opencv-functions-step-by-step.html, [Accessed: 05-Jun-2019].