Configurar opencv-contrib

Descargue la versión correspondiente de opencv-contrib

 

 

 

 

 

 

 Compilación CMake

 

 

 

 

 

 

 

 Si hay errores, verifique el registro

 

 

 Abra el archivo de registro y use la dirección para descargar el archivo desde el navegador.

 

 Después de descargar el archivo, colóquelo en la ubicación correspondiente del archivo y modifique el nombre del archivo.

 

 

 

 

 

 

 

 

 Ingrese la compilación de Vs

 

 

 

 

 

 

 

 

 

 

Acerca de la configuración de OpenCV4.0.1 + contrib cuando se ejecuta la solución "no se puede encontrar el punto de entrada del programa"

Solución

Copie todos los archivos de sufijo dll en ... \ opencv \ opencv_contrib \ x64 \ vc15 \ bin a C: \ Windows \ System32, el problema está resuelto.

 

 Código de prueba

1 #include <opencv2 / opencv.hpp>
 2 #include <opencv2 / xfeatures2d.hpp>
 3  // #include <opencv2 /> 
4  
5  usando el  espacio de nombres std;
6  usando el  espacio de nombres cv;
7  
8  int main ()
 9  {
 10      cv :: Mat imageL = cv :: imread ( " origin_1.jpg " );
11      cv :: Mat imageR = cv :: imread ( " origin_2.jpg " );
12      / * imshow ("1", imageL);
13      imshow ("2", imageR);
14     waitKey ();
 15      return 0; * / 
16  
17  
18  
19      // Método para extraer puntos de características
 20      // SIFT 
21      cv :: Ptr <cv :: xfeatures2d :: SIFT> sift = cv :: xfeatures2d :: SIFT :: create ();
 22      // ORB
 23      // cv :: Ptr <cv :: ORB> orb = cv :: ORB :: create ();
 24      // SURF
 25      // cv :: Ptr <cv :: xfeatures2d :: SURF> surf = cv :: xfeatures2d :: SURF :: create ();
 26  
27      // Punto de característica 
28      std :: vector <cv :: KeyPoint> keyPointL, keyPointR;
 29      // Extrae el punto de característica 
30 por separado     sift-> detect (imageL, keyPointL);
31      sift-> detect (imageR, keyPointR);
32  
33      // 画 特征 点
34      cv :: Mat keyPointImageL;
35      cv :: Mat keyPointImageR;
36      drawKeypoints (imageL, keyPointL, keyPointImageL, cv :: Scalar :: all (- 1 ), cv :: DrawMatchesFlags :: DRAW_RICH_KEYPOINTS);
37      drawKeypoints (imageR, keyPointR, keyPointImageR, cv :: Scalar :: all (- 1 ), cv :: DrawMatchesFlags :: DRAW_RICH_KEYPOINTS);
38  
39      // 显示 窗口
40      cv :: namedWindow ( " Puntos clave de imageL ", cv :: WINDOW_AUTOSIZE);
 41      cv :: namedWindow ( " KeyPoints of imageR " , cv :: WINDOW_AUTOSIZE);
 42  
43      // Mostrar puntos de características 
44      cv :: imshow ( " KeyPoints de imageL " , keyPointImageL);
 45      cv: : imshow ( " KeyPoints of imageR " , keyPointImageR); 46  
47      // Coincidencia de
 puntos de característica 
48      cv :: Mat despL, despR;
 49      // Extraer puntos de característica y calcular el descriptor de característica 
50      sift-> detectAndCompute (imageL, cv :: Mat (), keyPointL, despL);
 51      sift->detectAndCompute (imageR, cv :: Mat (), keyPointR, despR);
 52  
53      // Estructura para DMatch: índice de descriptor de consulta, índice de descriptor de tren, índice de imagen de tren y distancia entre descriptores.
 54      // int queryIdx-> es la imagen de prueba El subíndice del descriptor de punto de característica (descriptor) también es el subíndice del punto de característica correspondiente (punto clave) del descriptor.
55      // int trainIdx -> es el índice del descriptor del punto de característica de la imagen de muestra, y también el índice del punto de característica correspondiente.
56      // int imgIdx-> útil cuando la muestra son múltiples imágenes.
57      // distancia flotante -> representa la distancia euclidiana de este par de descriptores de puntos característicos coincidentes (esencialmente vectores). Cuanto menor es el valor, más similares son los dos puntos característicos. 
58      std :: vector <CV :: DMatch> Los partidos;
 59  
60      // Si es así método flannBased a diferentes tipos de necesidad orbe desp mediante la conversión de escribir 
61 es      SI(despL.type ()! = CV_32F || despR.type ()! = CV_32F)
 62      {
 63          despL.convertTo (Desplat, CV_32F);
64          despR.convertTo (después, CV_32F);
65      }
 66  
67      cv :: PTR <cv :: DescriptorMatcher> match = cv :: DescriptorMatcher :: create ( " FlannBased " );
68      matcher-> match (Desplat, después, matches);
69  
70      // 计算特征点距离的最大值
71      double maxDist = 0 ;
72      for ( int i = 0 ; i <despL.rows; i ++ )
73      {
 74          doble dist = coincide [i] .distance;
75          if (dist> maxDist)
 76              maxDist = dist;
77      }
 78  
79      // 挑选 好的 匹配 点
80      std :: vector <cv :: DMatch> good_matches;
81      para ( int i = 0 ; i <despL.rows; i ++ )
 82      {
 83          if (coincide con [i] .distance < 0.5 * maxDist)
 84          {
 85             good_matches.push_back (coincide con [i]);
86          }
 87      }
 88  
89  
90  
91      cv :: Mat imageOutput;
92      cv :: drawMatches (imageL, keyPointL, imageR, keyPointR, good_matches, imageOutput);
93  
94      cv :: namedWindow ( " imagen de coincidencia " , cv :: WINDOW_AUTOSIZE);
95      cv :: imshow ( " imagen de coincidencia " , imageOutput);
96      cv :: waitKey ( 0 );
97      devuelve  0 ;
98 }

 

Supongo que te gusta

Origin www.cnblogs.com/chenguifeng/p/12688312.html
Recomendado
Clasificación