Opencv - Riptutorial

Transcription

opencv#opencv

Tabla de contenidoAcerca de1Capítulo 1: Empezando con opencv2Observaciones2Versiones2OpenCV 32OpenCV 22Examples3Cargar y mostrar una imagen con OpenCV3Construye e instala OpenCV desde la fuente4Prepararse para la construcción4Construir e instalar5Instalación de prueba5Hola ejemplo mundial en Java6Obtener imagen de webcam6Java6C 7Pitón8Primeros pasos con OpenCV 3.1 en Windows8¿Qué y por qué OPENCV?14Capítulo 2: Acceso a píxeles16Observaciones16Examples16Acceda a valores de píxeles individuales con cv :: Mat :: at ()16Acceso eficiente a píxeles usando cv :: Mat :: ptr puntero17Configuración y obtención de valores de píxeles de una imagen gris en C 17Acceso a píxeles alternativos con Matiterator19Acceso a píxeles en el tapete21Capítulo 3: Cargar y guardar varios formatos de mediosExamplesCargando imagenes232323

Cargando Videos23Captura en vivo24Videos de ahorro24Guardar imágenes25Capítulo 4: Clasificadores en cascadaExamplesUsando los clasificadores en cascada para detectar la es en cascada para detectar rostro con JavaJavaDetección de rostro mediante clasificador haar en cascada.C Capítulo 5: Contraste y brillo en C 2828292932Sintaxis32Parámetros32Observaciones32g (i, j) .f (i, j) 32Examples33Ajuste de brillo y contraste de una imagen en c Capítulo 6: Creando un video3335Introducción35Examples35Creando un video con OpenCV (Java)Capítulo 7: Detección de mo Canny36Algoritmo Canny - C 37

Cálculo de umbrales38Video de Canny Edge de Webcam Capture - Python38Creación de prototipos de umbrales de Canny Edge con barras de seguimiento38Capítulo 8: Detección de manchasExamplesDetección de manchas circularesCapítulo 9: Detección de objetosExamplesCoincidencia de plantillas con Java404040424242Código fuente de Java42RESULTADO42Capítulo 10: Dibujar formas (línea, círculo, ., etc.) en C 44Introducción44Examples44Muestra de formas de dibujoCapítulo 11: Estructuras basicas4447Introducción47Examples47Tipo de datos47Estera47Vec48Capítulo 12: Funciones de dibujo en JavaExamplesDibujar el rectángulo en la imagen505050Capítulo 13: Genere y compile opencv 3.1.0-dev para Python2 en Windows usando CMake y Visu51Observaciones51Examples60Lectura de imagen y conversión a escala de grises60Capítulo 14: Inicialización de OpenCV en Android62ExamplesInicialización asíncrona6262

Administrador de OpenCVInicialización EstáticaCapítulo 15: Instalación de OpenCV636365Introducción65Examples65Instalación de OpenCV en UbuntuCapítulo 16: Modificación de contenido de imagenExamples656868Establecer imagen completa a un color sólido68Modificación píxel a píxel de las imágenes.68Modificación del color de la imagen en OpenCV - kmeans (). Para escanear todos los píxeles69Capítulo 17: Mostrar imagen OpenCVExamples7070Lectura básica y visualización de una imagen.70Leyendo MJPEG desde camara IP70Display Image OpenCV Java71Capítulo 18: Procesamiento de xamples72Suavizar imágenes con desenfoque gaussiano en C 72Umbral73Filtrado bilateral74Capítulo 19: Usando los clasificadores en cascada en Java76Sintaxis76Parámetros76Examples77Obtención de una imagen estática, detección de elementos en ella y salida de los resultado77Detectar imágenes desde un dispositivo de video78Convertir un objeto Mat en un objeto BufferedImage79Detecciones en Detecciones79

Capítulo 20: Utilizando VideoCapture con OpenCV PythonExamples8383Leyendo cuadros desde un video pre-capturado83Utilizando VideoCapture con OpenCV Java83Creditos85

Acerca deYou can share this PDF with anyone you feel could benefit from it, downloaded the latest versionfrom: opencvIt is an unofficial and free opencv ebook created for educational purposes. All the content isextracted from Stack Overflow Documentation, which is written by many hardworking individuals atStack Overflow. It is neither affiliated with Stack Overflow nor official opencv.The content is released under Creative Commons BY-SA, and the list of contributors to eachchapter are provided in the credits section at the end of this book. Images may be copyright oftheir respective owners unless otherwise specified. All trademarks and registered trademarks arethe property of their respective company owners.Use the content presented in this book at your own risk; it is not guaranteed to be correct noraccurate, please send your feedback and corrections to e1

Capítulo 1: Empezando con opencvObservacionesEsta sección proporciona una descripción general de qué es opencv y por qué un desarrolladorpuede querer usarlo.También debe mencionar cualquier tema grande dentro de la apertura, y vincular a los temasrelacionados. Dado que la Documentación para opencv es nueva, es posible que deba crearversiones iniciales de los temas relacionados.VersionesOpenCV 3VersiónFecha de 3.0 RC12015-04-233.0 beta2014-11-073.0 alfa2014-08-21OpenCV 2VersiónFecha de 08-17https://riptutorial.com/es/home2

VersiónFecha de -04-062.0.02009-10-011.0.02006-10-19ExamplesCargar y mostrar una imagen con OpenCVCon este ejemplo, veremos cómo cargar una imagen en color desde el disco y mostrarlautilizando las funciones integradas de OpenCV. Podemos usar los enlaces C / C , Python oJava para lograr esto.En C :#include opencv2/core.hpp #include opencv2/highgui.hpp #include iostream using namespace cv;int main(int argc, char** argv) {// We'll start by loading an image from the driveMat image imread("image.jpg", CV LOAD IMAGE COLOR);// We check that our image has been correctly loadedif(image.empty()) {std::cout "Error: the image has been incorrectly loaded." std::endl;return 0;}// Then we create a window to display our imagenamedWindow("My first OpenCV window");// Finally, we display our image and ask the program to wait for a key to be pressedimshow("My first OpenCV window", image);waitKey(0);return 0;}En Python:import sysimport cv2https://riptutorial.com/es/home3

# We load the image from diskimg cv2.imread("image.jpg", cv2.CV LOAD IMAGE COLOR)# We check that our image has been correctly loadedif img.size 0sys.exit("Error: the image has not been correctly loaded.")# We create a window to display our imagecv2.namedwindow("My first OpenCV window")# We display our image and ask the program to wait until a key is pressedcv2.imshow("My first OpenCV window", img)cv2.waitKey(0)# We close the windowcv2.destroyAllWindows()En Type;org.opencv.highgui.Highgui;class Sample{static void main (String[] args) {//Load native opencv librarySystem.loadLibrary(Core.NATIVE LIBRARY NAME);//Read image from file first param:file location ,second param:color spaceMat img imread("image.jpg",CV LOAD IMAGE COLOR);//If the image is successfully read.if (img.size() 0) {System.exit(1);}}HighGui no tiene ventanas nombradas ni equivalentes en el show en Java abierto. Utilice swing oswt para mostrar la imagen.Construye e instala OpenCV desde la fuenteEsta es una guía paso a paso para instalar OpenCV 3 en un sistema Linux basado en Debiandesde la fuente. Los pasos deben seguir siendo los mismos para otras distribuciones,simplemente reemplace los comandos relevantes del administrador de paquetes al instalarpaquetes para la compilación.Nota: Si no tiene ganas de perder el tiempo creando cosas o le disgusta el terminal, lo másprobable es que pueda instalar OpenCV desde la GUI del administrador de paquetes Synaptic.Sin embargo, estas bibliotecas a menudo están desactualizadas.Prepararse para la construcciónhttps://riptutorial.com/es/home4

Ejecute los siguientes comandos en su terminal para instalar los paquetes requeridos:sudo apt-get updatesudo apt-get install build-essentialsudo apt-get install cmake git libgtk2.0-dev pkg-config \libavcodec-dev libavformat-dev libswscale-devLos siguientes paquetes son opcionales:sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev \libpng-devlibtiff-dev libjasper-dev libdc1394-22-devEjecute el siguiente comando para obtener el código fuente de OpenCV y preparar la compilación:mkdir /srccd /srcgit clone https://github.com/opencv/opencv.gitcd opencvmkdir build && cd buildConstruir e instalarIncluimos los ejemplos en la compilación, pero siéntase libre de omitirlos. También siéntase librede establecer otras banderas y personalizar su construcción como mejor le parezca.cmake -D-D-D-DCMAKE BUILD TYPE RELEASE \CMAKE INSTALL PREFIX /usr/local \INSTALL PYTHON EXAMPLES ON \INSTALL C EXAMPLES ON .Si CMake no informó ningún error o faltaron bibliotecas, continúe con la compilación.make -j (nproc)Si no se produjeron errores, podemos continuar con la instalación de OpenCV en el sistema:sudo make installAhora OpenCV debería estar disponible para su sistema. Puede usar las siguientes líneas parasaber dónde se instaló OpenCV y qué bibliotecas se instalaron:pkg-config --cflags opencvpkg-config --libs opencv# get the include path (-I)# get the libraries path (-L) and the libraries (-l)Instalación de pruebaPrimero construimos los ejemplos de C :https://riptutorial.com/es/home5

cd /src/opencv/samplescmake .makeSi no se produjeron errores, ejecute una muestra, por ejemplo./cpp/cpp-example-edgeSi se ejecuta el ejemplo, entonces las bibliotecas de C se instalan correctamente.A continuación, prueba los enlaces de Python:python import cv2 print cv2. versionSi estos comandos importan OpenCV e imprimen la versión correcta sin quejarse, entonces losenlaces de Python están correctamente instalados.Felicidades, acabas de construir e instalar OpenCV. Feliz programacionPara Mac, consulte aquí la instalación de OpenCV en Mac OS XHola ejemplo mundial en JavaImagen de OpenCv leída del sistema de archivos en Javaimport org.opencv.core.Core;import org.opencv.core.Mat;import org.opencv.imgcodecs.Imgcodecs;public class Giris {public static void main(String[] args) {//Load native librarySystem.loadLibrary(Core.NATIVE LIBRARY NAME);//image container objectMat imageArray;//Read image from file systemimageArray pg");//Get image with & .out.println(imageArray.cols());}}Obtener imagen de webcamMuestra un video en vivo tomado de una cámara web utilizando la clase VideoCapture deOpenCV con Java, C / C y Python.Javahttps://riptutorial.com/es/home6

import org.opencv.core.Core;import org.opencv.core.Mat;import org.opencv.videoio.VideoCapture;public class Camera {public static void main(String[] args) {// Load Native LibrarySystem.loadLibrary(Core.NATIVE LIBRARY NAME);// image container objectMat imageArray new Mat();// Video device accesVideoCapture videoDevice new VideoCapture();// 0:Start default video device 1,2 etc video device idvideoDevice.open(0);// is contectedif (videoDevice.isOpened()) {// Get frame from cameravideoDevice.read(imageArray);// image arraySystem.out.println(imageArray.toString());// Release video devicevideoDevice.release();} else {System.out.println("Error.");}}}C #include "opencv2/opencv.hpp"#include "iostream"int main(int, char**) {// open the first webcam plugged in the computercv::VideoCapture camera(0);if (!camera.isOpened()) {std::cerr "ERROR: Could not open camera" std::endl;return 1;}// create a window to display the images from the webcamcv::namedWindow("Webcam", CV WINDOW AUTOSIZE);// this will contain the image from the webcamcv::Mat frame;// capture the next frame from the webcamcamera frame;// display the frame until you press a keywhile (1) {// show the image on the windowcv::imshow("Webcam", frame);// wait (10ms) for a key to be pressedif (cv::waitKey(10) 0)break;}https://riptutorial.com/es/home7

return 0;}Pitónimport numpy as npimport cv2# Video source - can be camera index number given by 'ls /dev/video*# or can be a video file, e.g. ' /Video.avi'cap cv2.VideoCapture(0)while(True):# Capture frame-by-frameret, frame cap.read()# Our operations on the frame come heregray cv2.cvtColor(frame, cv2.COLOR BGR2GRAY)# Display the resulting framecv2.imshow('frame',gray)if cv2.waitKey(1) & 0xFF ord('q'):break# When everything done, release the s pasos con OpenCV 3.1 en WindowsInstalamos OpenCV 3.1.0 en Windows y empezamos. Hay dos formas de instalar OpenCV enWindows. Una es descargar el instalador y ejecutarlo. Otro es construir desde la fuente.Esta es la forma más fácil de instalar OpenCV y comenzar. OpenCV ofrece binariosprecompilados para instalar en Windows aquí . Una vez que finalice la descarga, extráigala einstálela en la ruta elegida.ProTip: asegúrese de que su ruta OpenCV no incluya ningún espacio. Por lo tanto, es mejor si loinstala en el directorio C: \ o D: \ rootEl problema con el método anterior es que no puede usar los módulos opencv contrib. Además,no viene con todas las herramientas y bibliotecas de terceros. Por lo tanto, si desea utilizar todosestos, simplemente siga adelante.Explicaré el mínimo mínimo para instalar OpenCV desde la fuente. Para más avanzado, refiéraseaquí . Instale CMake . Clone la fuente de OpenCV desde https://github.com/Itseez/opencv.git en algún directorioque no tenga espacios. Vamos a referirlo como "OpenCVdir".https://riptutorial.com/es/home8

Ahora, abra CMake GUI y agregue su directorio de origen (OpenCVdir) al menú Orígenes ygenere el directorio en el menú de compilación. Consejo: si no hay un directorio decompilación, cree uno en su carpeta de opencv. Haga clic en Configurar y seleccione la versión del compilador de Visual Studio. TeníaVisual Studio 2013 Professional de 32 bits, así que elegí el compilador de Visual Studio 12.https://riptutorial.com/es/home9

Sugerencia: Puede descargar Visual Studio 2013 Professional desde aquí. Viene con 30 días deprueba 90 días de seguimiento extendido después de iniciar sesión. Presione Finalizar y CMake cargará todos los paquetes automáticamente. Puede agregar oeliminar paquetes. Presiona Configurar de nuevo. Si desea compilar con módulos opencv contrib adicionales, debe descargarlos desde aquí .Luego, extráigalos y agregue el directorio opencv contrib / modules a su CMake como semuestra a continuación.https://riptutorial.com/es/home10

Ahora presiona Configurar nuevamente y luego presiona Generar. Cerrar CMake. Vaya a la carpeta your opencv \ build y abra el archivo denominado'OpenCV.sln'. - Se abrirá Visual Studio. Ahora, ejecútalo en Debugmodo y liberaciónmodo. Ahora, en el explorador de soluciones en la parte superior derecha de su Visual Studio,seleccione INSTALAR proyecto y compílelo.https://riptutorial.com/es/home11

¡¡Hurra!! Disfruta de tu OpenCV.Agregando OpenCV include directory a la variable PATH de las Variables de Ambiente: Vaya a Propiedades del sistema y haga clic en Configuración avanzada del sistema.https://riptutorial.com/es/home12

Ahora, haga clic en Variables de entorno Ruta Editar.https://riptutorial.com/es/home13

Aquí, agregue la carpeta bin ubicada en su OpenCVdir / build / install / x86 / vc ** / bin aesta variable. Tenga cuidado de no reemplazar los valores de ruta existentes. Después de esto, debe reiniciar su sistema para que las variables de entorno cambien yahora está listo para comenzar.¿Qué y por qué OPENCV?OpenCV (Open Source Computer Vision Library) es una biblioteca de software de visión decomputadora y de aprendizaje automático de código abierto. Fue construido para variospropósitos, tales como aprendizaje automático, visión artificial, algoritmo, operacionesmatemáticas, captura de video, procesamiento de imágenes, etc. Con el paso de los años, se havuelto muy popular entre los investigadores y desarrolladores en cuanto a su soporte endiferentes plataformas (Windows, Linux y Linux). , android, ios). También tiene envoltorio envarios lenguajes de programación de renombre. Según el acuerdo de licencia, tiene acceso paraque las empresas utilicen y modifiquen el código.La biblioteca contiene más de 2500 algoritmos optimizados, que tienen una excelente precisiónen el rendimiento y la velocidad. Estos algoritmos se pueden usar para detectar y reconocerrostros, identificar objetos, clasificar acciones humanas en videos, rastrear movimientos decámara, rastrear objetos en movimiento, extraer modelos 3D de objetos, producir nubes dehttps://riptutorial.com/es/home14

puntos 3D desde cámaras estéreo, unir imágenes para producir una alta resolución imagen deuna escena completa, encuentre imágenes similares de una base de datos de imágenes, eliminelos ojos rojos de las imágenes tomadas con flash, siga los movimientos de los ojos, reconozcapaisajes y establezca marcadores para superponerlos con realidad aumentada, etc. OpenCVcuenta con excelentes personas y comunidades involucradas como usuarios , desarrolladores einvestigadores, el número es más de 47 mil y el número estimado de descargas supera los 7millones. La biblioteca se encuentra ampliamente en empresas profesionales, grupos deinvestigación y otros grupos.Muchas empresas bien establecidas como Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda,Toyota que emplean la biblioteca, hay muchas empresas nuevas como Applied Minds, VideoSurfy Zeitera, que hacen un uso extensivo de OpenCV. Los usos desplegados de OpenCV abarcandesde unir imágenes de streetview, detectar intrusiones en el video de vigilancia en Israel,monitorear el equipo de la mina en China, ayudar a los robots a navegar y recoger objetos enWillow Garage, detectar accidentes de ahogamiento en piscinas en Europa, ejecutar arteinteractivo en España y Nueva York, revisando las pistas en busca de escombros en Turquía,inspeccionando las etiquetas de los productos en fábricas de todo el mundo hasta la rápidadetección de rostros en Japón. Tiene interfaces C , C, Python, Java y MATLAB y es compatiblecon Windows, Linux, Android y Mac OS. OpenCV se inclina principalmente hacia aplicaciones devisión en tiempo real y aprovecha las instrucciones MMX y SSE cuando están disponibles.Actualmente se están desarrollando activamente las interfaces CUDA y OpenCL. Hay más de 500algoritmos y aproximadamente 10 veces más funciones que componen o soportan esosalgoritmos. OpenCV está escrito de forma nativa en C y tiene una interfaz con plantilla quefunciona perfectamente con los contenedores STL.Información recogida de la web oficial.Lea Empezando con opencv en línea: ndo-conopencvhttps://riptutorial.com/es/home15

Capítulo 2: Acceso a píxelesObservacionesTenga cuidado de conocer el tipo de cv::Mat que está tratando. Por ejemplo, si tiene un cv::Mat detipo CV 8UC3 , pero acceda a él con image.at uchar (r,c) no se producirá ningún error, pero suprograma tendrá algún comportamiento inesperado.ExamplesAcceda a valores de píxeles individuales con cv :: Mat :: at ()Para acceder a los valores de píxeles en un objeto OpenCV cv::Mat , primero debe conocer el tipode su matriz.Los tipos más comunes son: para imágenes de escala de grises de 1 canal de 8 bits;CV 32FC1 para imágenes de escala de grises de 1 canal de punto flotante de 32 bits;CV 8UC3 para imágenes en color de 8 canales y 3 canales; yCV 32FC3 para imágenes de color de 3 canales de punto flotante de 32 bits.CV 8UC1La configuración predeterminada con cv::imread creará una matriz CV 8UC3 .Para acceder a píxeles individuales, la forma más segura, aunque no la más eficiente, es usar elmétodo cv::Mat::at T (r,c) donde r es la fila de la matriz y c es la columna . El argumento de laplantilla depende del tipo de la matriz.Digamos que usted tiene un cv::Matdel píxel serán diferentes.image. Según su tipo, el método de acceso y el tipo de color Para CV 8UC1 : uchar pixelGrayValue image.at uchar (r,c) . Para CV 8UC3 : cv::Vec3b pixelColor image.at cv::Vec3b (r,c) . El objeto cv::Vec3brepresenta un triplete de valores uchar (enteros entre 0 y 255). Para CV 32FC1 : float pixelGrayValue image.at float (r,c) . Para CV 32FC3 : cv::Vec3f pixelColor image.at cv::Vec3f (r,c) . El objeto cv::Vec3frepresenta un triplete de valores float .Tenga en cuenta que OpenCV representa imágenes en orden de fila mayor , como, por ejemplo,Matlab o como la convención en Álgebra. Por lo tanto, si sus coordenadas de píxeles son (x,y) ,entonces accederá al píxel utilizando image.at . (y,x) .Alternativamente, at también es compatible con el acceso a través de un solo argumentocv::Point .En este caso, el acceso se realiza en la columna principal :https://riptutorial.com/es/home16

image.at . (cv::Point(x,y));Eche un vistazo a la documentación de OpenCV para obtener más detalles sobre este método.Acceso eficiente a píxeles usando cv :: Mat :: ptr punteroSi la eficiencia es importante, una forma rápida de iterar sobre píxeles en un objeto cv::Mat esusar su ptr T (int r) para obtener un puntero al principio de la fila r (índice basado en 0).Según el tipo de matriz, el puntero tendrá una plantilla diferente. Para CV 8UC1 : uchar* ptr image.ptr uchar (r);Para CV 8UC3 : cv::Vec3b* ptr image.ptr cv::Vec3b (r);Para CV 32FC1 : float* ptr image.ptr float (r);Para CV 32FC3 : cv::Vec3f* ptr image.ptr cv::Vec3f (r);Este objeto ptr se puede usar para acceder al valor de píxel en la fila r y la columna c llamando aptr[c] .Para ilustrar esto, aquí hay un ejemplo donde cargamos una imagen del disco e invertimos suscanales Azul y Rojo, operando píxel por píxel:#include opencv2/core.hpp #include opencv2/imgproc.hpp #include opencv2/highgui.hpp int main(int argc, char** argv) {cv::Mat image cv::imread("image.jpg", CV LOAD IMAGE COLOR);if(!image.data) {std::cout "Error: the image wasn't correctly loaded." std::endl;return -1;}// We iterate overfor(int r 0; r // We obtain acv::Vec3b* ptrall pixels of the imageimage.rows; r ) {pointer to the beginning of row r image.ptr cv::Vec3b (r);for(int c 0; c image.cols; c ) {// We invert the blue and red values of the pixelptr[c] cv::Vec3b(ptr[c][2], ptr[c][1], ptr[c][0]);}}cv::imshow("Inverted Image", image);cv::waitKey();return 0;}Configuración y obtención de valores de píxeles de una imagen gris en C // PixelAccessTutorial.cpp : Defines the entry point for the consolehttps://riptutorial.com/es/home17

// Environment: Visual studio 2015, Windows 10// Assumptions: Opecv is installed configured in the visual studio project// Opencv version: OpenCV 3.1#include "stdafx.h"#include opencv2/core/core.hpp #include opencv2/highgui/highgui.hpp #include opencv2/imgproc/imgproc.hpp #include string #include iostream int main(){cv::Mat imgOriginal;cv::Mat imgGrayscale;// input image// grayscale of input imagestd::cout "Please enter an image filename : ";std::string img addr;std::cin img addr;std::cout "Searching for " img addr std::endl;imgOriginal cv::imread(img addr);// open imageif (imgOriginal.empty()) {// if unable to openimagestd::cout "error: image not read from file\n\n";on command linereturn(0);}cv::cvtColor(imgOriginal, imgGrayscale, CV BGR2GRAY);// show error message// and exit program// convert to grayscaleconst int channels imgGrayscale.channels();printf("Number of channels %d", channels);cv::Mat output ;imgGrayscale.copyTo(output); // Just to make sure the Mat objects are of the same size.//Set the threshhold to your desired valueuchar threshhold 127;if (channels 1){for (int x 0; x imgGrayscale.rows; x ) {for (int y 0; y imgGrayscale.cols; y ) {// Accesssing values of each pixelif (imgGrayscale.at uchar (x, y) threshhold) {// Setting the pixel values to 255 if it's above the thresholdoutput.at uchar (x, y) 254;}else if (imgGrayscale.at uchar (x, y) threshhold) {// Setting the pixel values to 255 if it's below the thresholdoutput.at uchar (x, y) 0;}else {// Just in caseprintf("The value at (%d, %d) are not right. Value: %d\n", x, y,imgGrayscale.at uchar (x, y));}https://riptutorial.com/es/home18

}}}else if (channels 3){// This is only for gray scale imagesprintf("\tThe image has 3 channels. The function does not support images with 3channels.\n");}//Create windows to show imagecv::namedWindow("Gray scale", CV WINDOW AUTOSIZE);cv::namedWindow("Binary", CV WINDOW AUTOSIZE);cv::imshow("Gray scale", imgGrayscale);cv::imshow("Binary", output);cv::waitKey(0);// hold windows open until user presses a keyreturn 0;}Acceso a píxeles alternativos con MatiteratorNo es la mejor manera de iterar a través de los píxeles; sin embargo, es mejor que cv :: Mat :: at T .Supongamos que tiene una imagen en color en su carpeta y desea iterar cada píxel de estaimagen y borrar los canales verdes y rojos (tenga en cuenta que este es un ejemplo, puedehacerlo de formas más optimizadas);#include opencv2/core/core.hpp #include opencv2/highgui/highgui.hpp int main(int argc, char **argv){// Create a containercv::Mat im;//Create a vectorcv::Vec3b *vec;// Create an mat iteratorcv::MatIterator cv::Vec3b it;// Read the image in color formatim cv::imread("orig1.jpg", 1);// iterate through each pixelfor(it im.begin cv::Vec3b (); it ! im.end cv::Vec3b (); it){// Erase the green and red channels(*it)[1] 0;(*it)[2] 0;}https://riptutorial.com/es/home19

// Create a new windowcv::namedWindow("Resulting Image");// Show the imagecv::imshow("Resulting Image", im);// Wait for a keycv::waitKey(0);return 0;}Para compilar esto con Cmake:cmake minimum required(VERSION 2.8)project(Main)find package(OpenCV REQUIRED)add executable(Main main.cpp)target link libraries(Main {OpenCV LIBS})La imagen original:La imagen procesada:https://riptutorial.com/es/home20

Tenga en cuenta que no tocamos sólo el canal azul.Para más información: http://docs.opencv.org/2.4/opencv tutorials.pdf Página: 145Acceso a píxeles en el tapeteEl acceso de píxeles individuales en la estructura de la matriz OpenCV se puede lograr demúltiples maneras. Para entender cómo acceder, es mejor aprender primero los tipos de datos.Estructuras básicas explica los tipos de datos básicos. En breve, CV bitdepth {U S F}C( number of channels ) es la estructura básica de un tipo. Junto con eso, esimportante entender las estructuras de Vec .typedef Vec type, channels Vec channels one char for the type donde type es uno de uchar,i, f, d , respectivamente.short, int, float, doublePor ejemplo, Vec2b indica un unsignedy los caracteres para cada tipo son b,char vector of 2 channelss,.Considere Mat mat(R,C,T) donde R es #rows, C es #cols y T es tipo. Algunos ejemplos paraacceder a la coordenada (i, j) de mat son:2D:https://riptutorial.com/es/home21

If the type is CV 8U or CV 8UC1 ---- //they are aliasmat.at uchar (i,j) // -- This will give char value of index (i,j)//If you want to obtain int value of it(int)mat.at uchar (i,j)If the type is CV 32F or CV 32FC1 ---- //they are aliasmat.at float (i,j) // -- This will give float value of index (i,j)3D:If the type is CV 8UC2 or CV 8UC3 or more channelsmat.at Vec2b/Vec3b (i,j)[k] // note that (k #channels)//If you want to obtain int value of it(int)mat.at uchar (i,j)[k]If the type is CV 64FC2 or CV 64FC3mat.at Vec2d/Vec3d (i,j)[k] // note that k #channelsTenga en cuenta que es muy importante ingresar el tipo correcto en . , de lo contrario, puedetener un error de tiempo de ejecución o resultados no deseados.Lea Acceso a píxeles en línea: o-a-pixeleshttps://riptutorial.com/es/home22

Capítulo 3: Cargar y guardar varios formatosde mediosExamplesCargando imagenes#include highgui.h //.cv::Mat img cv::imread("img.jpg");.Cargando VideosMuestra cómo usar cv::VideoCapture . Aquí está el ejemplo de cargar video desde un pencv2/core/core.hpp" iostream using namespace cv;VideoCapture videoSource;Mat frame;#define VIDEO PATH "video.avi"int main(){//Open videoif (!videoSource.open(VIDEO PATH)){std::cout "Video not found at " VIDEO PATH std::endl;return 1;// Exit if fail}videoSource.set(CV CAP PROP CONVERT RGB, 1);int cameraWidth videoSource.get(CV CAP PROP FRAME WIDTH);int cameraHeight videoSource.get(CV CAP PROP FRAME HEIGHT);float cameraAspectRatio cameraWidth / cameraHeight;std::cout "Camera resolution: " cameraWidth ", " cameraHeight " aspect ratio:" cameraAspectRatio std::endl;while(true){videoSource frame;if(frame.empty())break;//Resize framehttps://riptutorial.com/es/home23

cv::resize(frame, frame, cv::Size(320, 320 / cameraAspectRatio));imshow("frame", frame);waitKey(20);}waitKey(0);return 0;}Captura en vivoMuestra cómo usar cv::VideoCapture con, por ejemplo, una cámara web. Capturar fotogramasdesde la webcam y visualizarlos. Aquí está el código de ejemplo:#include iostream #include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/core/core.hpp"using namespace cv;VideoCapture videoSource;Mat frame;int main(){if(!videoSource.open(0)) //if more cameras available use 1,2,.return 1;while(true){videoSource frame;if(frame.empty())break;imshow("Webcam", frame); //or any kinf of precessingif(waitKey(1) 27)break;//stop capturing is ESC pressed}return 0;}Videos de ahorroMuestra cómo usar cv :: VideoWriter.#include "opencv2/highgui/highgui.hpp"#include iostream using namespace cv;using namespace std;int main(int argc, char* argv[]){VideoCapture cap(0); // open the video camera no. 0if (!cap.isOpened())// if not success, exit programhttps://riptutorial.com/es/home24

{cout "ERROR: Cannot open the video file" endl;return -1;}namedWindow("MyVideo",CV WINDOW AUTOSIZE

python import cv2 print cv2._version_ Si estos comandos importan OpenCV e imprimen la versión correcta sin quejarse, entonces los enlaces de Python están correctamente instalados. Felicidades, acabas de construir e instalar OpenCV. Feliz programacion Para Mac, consulte aquí la instalación de OpenCV en Mac OS X Hola ejemplo mundial .