Vamos a programar usando OpenCV y C++ bajo VS Code. Configurar VS Code y las librerías para ciertos lenguajes puede ser complicado. En este tutorial veremos cómo configurar un ordenador y VS Code para poder desarrollar con OpenCV y C++.
Requisitos previos
Instalación de VS Code y configuración de las extensiones Code Runner y C\
Instalación del compilador precompilado GCC y OpenCV
Para que la cadena de compilación funcione, debe elegir la versión del compilador (gcc u otro) que corresponda a la versión precompilada de OpenCV
Versión de OpenCV precompilada para Mingw64: OpenCV-4.5.5-x64
Instalar la versión correspondiente de GCC con MSYS2
Versión de GCC para Mingw64: mingw-w64-x86_64-gcc‘>mingw-w64-x86_64-gcc (para instalar con el terminal MSYS MINGW64)
Abra el terminal MSYS MINGW64 e introduzca el comando
pacman -S mingw-w64-x86_64-gcc

N.B.: puede resultar difícil mantener distintas versiones de compiladores o software precompilado. No dudes en eliminar todo lo que no consideres necesario de lo que estés instalando.
Ahora tenemos el compilador y OpenCV en la versión Mingw64.
Configuración de variables de entorno
Para que el ordenador sepa dónde se encuentran los distintos códigos fuente, ejecutables y bibliotecas, hay que añadir las rutas a la variable de entorno Path del sistema.
Para el compilador, añada la ruta al ejecutable g++.exe ( ex: C:\msys64\mingw64\bin )
A continuación, añada la ruta a las bibliotecas precompiladas de OpenCV (por ejemplo, C:\opencv\x64\mingw\bin).

A continuación, puede reiniciar el ordenador para tener en cuenta el cambio en las variables de entorno.
Compilar y probar el proyecto OpenCV
En este punto, puedes compilar y ejecutar código C++ que utilice OpenCV desde el terminal VS Code (o desde cualquier terminal).
Tomemos el código básico para leer la cámara y guardémoslo en el archivo test_opencv.cpp
#include<opencv2/opencv.hpp> //OpenCV header to use VideoCapture class//
#include<iostream>
using namespace std;
using namespace cv;
int main() {
Mat myImage;//Declaring a matrix to load the frames//
namedWindow("CAM Player");//Declaring the video to show the video//
VideoCapture cap(0);//Declaring an object to capture stream of frames from default camera//
if (!cap.isOpened()){ //This section prompt an error message if no video stream is found//
cout << "No video stream detected" << endl;
system("pause");
return-1;
}
while (true){ //Taking an everlasting loop to show the video//
cap >> myImage;
if (myImage.empty()){ //Breaking the loop if no video frame is detected//
break;
}
imshow("CAM Player", myImage);//Showing the video//
char c = (char)waitKey(25);//Allowing 25 milliseconds frame processing time and initiating break condition//
if (c == 27 || c == 'q'){ //If 'Esc' or 'q' is entered break the loop//
break;
}
}
cap.release();//Releasing the buffer memory//
return 0;
}
Para compilar y ejecutar el código puede utilizar el siguiente comando
g++ test_opencv.cpp -o test_opencv -IC:\opencv\include -LC:\opencv\x64\mingw\bin -llibopencv_calib3d455 -llibopencv_core455 -llibopencv_dnn455 -llibopencv_features2d455 -llibopencv_flann455 -llibopencv_highgui455 -llibopencv_imgcodecs455 -llibopencv_imgproc455 -llibopencv_ml455 -llibopencv_objdetect455 -llibopencv_photo455 -llibopencv_stitching455 -llibopencv_video455 -llibopencv_videoio455 && ./test_opencv.exe
Puede ejecutar el código sin recompilarlo con el comando
./test_opencv.exe
A continuación, utilizamos VS Code para compilar y ejecutar el código.
Ejecutar código con Code Runner en VS Code
Para modificar los comandos de lanzamiento, ve a la configuración de la extensión Code Runner, busca «Code Runner: Executor Maps» y modifica la línea que te interese (aquí, cpp). Vamos a añadir todas las librerías que nos permiten compilar código C++ incluyendo OpenCV en VS Code.
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe build opencv",
"command": "C:\\msys64\\mingw64\\bin\\g++.exe",
"args": [
"-g",
"${file}",
"-o",
"${workspaceFolder}\\${fileBasenameNoExtension}.exe",
"-I",
"C:\\opencv\\include",
"-L",
"C:\\opencv\\x64\\mingw\\bin",
"-l",
"libopencv_calib3d455",
"-l",
"libopencv_core455",
"-l",
"libopencv_dnn455",
"-l",
"libopencv_features2d455",
"-l",
"libopencv_flann455",
"-l",
"libopencv_highgui455",
"-l",
"libopencv_imgcodecs455",
"-l",
"libopencv_imgproc455",
"-l",
"libopencv_ml455",
"-l",
"libopencv_objdetect455",
"-l",
"libopencv_photo455",
"-l",
"libopencv_stitching455",
"-l",
"libopencv_video455",
"-l",
"libopencv_videoio455"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
},
],
"version": "2.0.0"
}

Ahora puede ejecutar el programa con Code Runner en VS Code
Ejecutar código con Ejecutar y Depurar en VS Code
En VS Code, puede configurar el procedimiento de ejecución y depuración, que le permite ejecutar y depurar código utilizando F5.
Para ello, configuraremos una tarea de compilación en el archivo tasks.json. Esta tarea contiene la ruta al compilador C++ y a las librerías OpenCV.
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe build opencv",
"command": "C:\\msys64\\mingw64\\bin\\g++.exe",
"args": [
"-g",
"${file}",
"-o",
"${workspaceFolder}\\${fileBasenameNoExtension}.exe",
"-I",
"C:\\opencv\\include",
"-L",
"C:\\opencv\\x64\\mingw\\bin",
"-l",
"libopencv_calib3d455",
"-l",
"libopencv_core455",
"-l",
"libopencv_dnn455",
"-l",
"libopencv_features2d455",
"-l",
"libopencv_flann455",
"-l",
"libopencv_highgui455",
"-l",
"libopencv_imgcodecs455",
"-l",
"libopencv_imgproc455",
"-l",
"libopencv_ml455",
"-l",
"libopencv_objdetect455",
"-l",
"libopencv_photo455",
"-l",
"libopencv_stitching455",
"-l",
"libopencv_video455",
"-l",
"libopencv_videoio455"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
},
],
"version": "2.0.0"
}
Esta tarea puede realizarse mediante la combinación de teclas CTRL+MAYÚS+B
A continuación, le decimos a VS Code cómo lanzar el código en el archivo launch.json. Este archivo le dirá a VS Code que ejecute el comando ./${workspaceFolder}/${fileBasenameNoExtension}.exe i.e. test_opencv.exe
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(Windows) Launch",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"console": "externalTerminal",
"preLaunchTask": "C/C++: g++.exe build opencv"
}
]
}
Cuando modifique el archivo, deberá compilarlo de nuevo para aplicar las modificaciones. Esta tarea se tiene en cuenta en launch.json con la opción preLaunchTask, que llama a la etiqueta de la tarea de compilación «C\».
Ahora puedes lanzar un proyecto OpenCV en C++ usando el comando F5 o el menú ‘Run and Debug’ en VS Code.

Paquetes MSYS2
En lugar de la versión compilada de OpenCV, puede instalar el paquete MSYS2 correspondiente
Elija paquetes de la misma versión en MSYS2 , MinGw64
- Versión de GCC: mingw-w64-x86_64-gcc
- Versión de OpenCV: mingw-w64-x86_64-opencv
pacman -S mingw-w64-x86_64-opencv
Por mi parte, he encontrado problemas de compatibilidad con Qt6. Si alguien ha conseguido que funcione, por favor, que me lo haga saber.