-1

我正在尝试按照 aruco developerper 的建议使用 cmake 3.5.2 在我的 Windows 机器上安装aruco

我的配置:

  • 视窗8
  • CMake 3.5.2
  • 阿鲁科 2.0.5

我可以在 cmake 中成功配置和生成 aruco。

然后我去 aruco\build -> 右键单击​​-> 打开 cmd -> 输入 mingw32-make -> 得到以下错误:

C:\aruco-2.0.5\build>mingw32-make
Scanning dependencies of target aruco
[  2%] Building CXX object src/CMakeFiles/aruco.dir/ar_omp.cpp.obj
[  4%] Building CXX object src/CMakeFiles/aruco.dir/cameraparameters.cpp.obj
[  6%] Building CXX object src/CMakeFiles/aruco.dir/cvdrawingutils.cpp.obj
In file included from C:\aruco-2.0.5\src\aruco.h:149:0,
                 from C:\aruco-2.0.5\src\cvdrawingutils.h:31,
                 from C:\aruco-2.0.5\src\cvdrawingutils.cpp:28:
C:\aruco-2.0.5\src\markerdetector.h:160:40: warning: "/*" within comment [-Wcomm
ent]
                      ARUCO_MIP_36h12, //**** recommended
 ^
C:\aruco-2.0.5\src\markerdetector.h:212:60: warning: unused parameter 'r2' [-Wun
used-parameter]
     void setThresholdParamRange(size_t r1 = 0, size_t r2 = 0) {_params. _thresP
aram1_range = r1; }
                                                            ^
C:\aruco-2.0.5\src\markerdetector.h:267:30: warning: unused parameter 'val' [-Wu
nused-parameter]
     void setDesiredSpeed(int val){}
                              ^
In file included from C:\aruco-2.0.5\src\posetracker.h:33:0,
                 from C:\aruco-2.0.5\src\aruco.h:150,
                 from C:\aruco-2.0.5\src\cvdrawingutils.h:31,
                 from C:\aruco-2.0.5\src\cvdrawingutils.cpp:28:
C:\aruco-2.0.5\src\markermap.h: In member function 'void aruco::Marker3DInfo::to
Stream(std::ostream&)':
C:\aruco-2.0.5\src\markermap.h:49:77: warning: comparison between signed and uns
igned integer expressions [-Wsign-compare]
     void toStream(std::ostream &str){str<<id<<" "<<size()<<" ";for(int i=0;i<si
ze();i++) str<<at(i).x<<" "<<at(i).y<<" "<<at(i).z<<" ";}
                                                                             ^
In file included from C:\aruco-2.0.5\src\posetracker.h:33:0,
                 from C:\aruco-2.0.5\src\aruco.h:150,
                 from C:\aruco-2.0.5\src\cvdrawingutils.h:31,
                 from C:\aruco-2.0.5\src\cvdrawingutils.cpp:28:
C:\aruco-2.0.5\src\markermap.h: In member function 'void aruco::Marker3DInfo::fr
omStream(std::istream&)':
C:\aruco-2.0.5\src\markermap.h:50:80: warning: comparison between signed and uns
igned integer expressions [-Wsign-compare]
     void fromStream(std::istream &str){int s;str>>id>>s;resize(s);for(int i=0;i
<size();i++) str>>at(i).x>>at(i).y>>at(i).z;}

^
[  9%] Building CXX object src/CMakeFiles/aruco.dir/dictionary.cpp.obj
In file included from C:\aruco-2.0.5\src\dictionary.cpp:9:0:
C:\aruco-2.0.5\src\markermap.h: In member function 'void aruco::Marker3DInfo::to
Stream(std::ostream&)':
C:\aruco-2.0.5\src\markermap.h:49:77: warning: comparison between signed and uns
igned integer expressions [-Wsign-compare]
     void toStream(std::ostream &str){str<<id<<" "<<size()<<" ";for(int i=0;i<si
ze();i++) str<<at(i).x<<" "<<at(i).y<<" "<<at(i).z<<" ";}
                                                                             ^
In file included from C:\aruco-2.0.5\src\dictionary.cpp:9:0:
C:\aruco-2.0.5\src\markermap.h: In member function 'void aruco::Marker3DInfo::fr
omStream(std::istream&)':
C:\aruco-2.0.5\src\markermap.h:50:80: warning: comparison between signed and uns
igned integer expressions [-Wsign-compare]
     void fromStream(std::istream &str){int s;str>>id>>s;resize(s);for(int i=0;i
<size();i++) str>>at(i).x>>at(i).y>>at(i).z;}

^
C:\aruco-2.0.5\src\dictionary.cpp: In static member function 'static std::string
 aruco::Dictionary::getTypeString(aruco::Dictionary::DICT_TYPES)':
C:\aruco-2.0.5\src\dictionary.cpp:236:11: warning: enumeration value 'ARTAG' not
 handled in switch [-Wswitch]
     switch(t){
           ^
C:\aruco-2.0.5\src\dictionary.cpp: In member function 'aruco::MarkerMap aruco::D
ictionary::createMarkerMap(cv::Size, int, int, const std::vector<int>&, bool)':
C:\aruco-2.0.5\src\dictionary.cpp:275:39: warning: comparison between signed and
 unsigned integer expressions [-Wsign-compare]
     if (gridSize.height*gridSize.width!=ids.size())throw cv::Exception(9001, "g
ridSize != ids.size()Invalid ", "Dictionary::createMarkerMap", __FILE__, __LINE_
_);
                                       ^
C:\aruco-2.0.5\src\dictionary.cpp:284:23: warning: comparison between signed and
 unsigned integer expressions [-Wsign-compare]
         for (int i=0;i<ids.size();i++) TInfo[i].id=ids[i];
                       ^
C:\aruco-2.0.5\src\dictionary.cpp:285:13: warning: unused variable 'sizeY' [-Wun
used-variable]
         int sizeY=gridSize.height*MarkerSize+(gridSize.height-1)*MarkerDistance
;
             ^
C:\aruco-2.0.5\src\dictionary.cpp:286:13: warning: unused variable 'sizeX' [-Wun
used-variable]
         int sizeX=gridSize.width*MarkerSize+(gridSize.width-1)*MarkerDistance;
             ^
C:\aruco-2.0.5\src\dictionary.cpp:312:37: warning: comparison between signed and
 unsigned integer expressions [-Wsign-compare]
                     if (CurMarkerIdx>=ids.size()) throw cv::Exception(999," Fid
ucidalMarkers::createMarkerMapImage_ChessMarkerMap","INTERNAL ERROR. REWRITE THI
S!!",__FILE__,__LINE__);
                                     ^
C:\aruco-2.0.5\src\dictionary.cpp:300:13: warning: unused variable 'centerX' [-W
unused-variable]
         int centerX=sizeX/2;
             ^
C:\aruco-2.0.5\src\dictionary.cpp:301:13: warning: unused variable 'centerY' [-W
unused-variable]
         int centerY=sizeY/2;
             ^
C:\aruco-2.0.5\src\dictionary.cpp:303:14: warning: unused variable 'centerData'
[-Wunused-variable]
         bool centerData=true;
              ^
[ 11%] Building CXX object src/CMakeFiles/aruco.dir/ippe.cpp.obj
C:\aruco-2.0.5\src\ippe.cpp: In function 'void IPPE::IPPComputeRotations(double,
 double, double, double, double, double, cv::OutputArray, cv::OutputArray)':
C:\aruco-2.0.5\src\ippe.cpp:307:45: warning: variable 'ata10' set but not used [
-Wunused-but-set-variable]
     double a00, a01, a10,a11, ata00, ata01, ata10,ata11,b00, b01, b10,b11,binv0
0, binv01, binv10,binv11;
                                             ^
C:\aruco-2.0.5\src\ippe.cpp:311:19: warning: variable 'a' set but not used [-Wun
used-but-set-variable]
     double b0, b1,a,gamma,dtinv;
                   ^
[ 13%] Building CXX object src/CMakeFiles/aruco.dir/marker.cpp.obj
C:\aruco-2.0.5\src\marker.cpp: In member function 'void aruco::Marker::rotateXAx
is(cv::Mat&)':
C:\aruco-2.0.5\src\marker.cpp:299:22: error: 'M_PI' was not declared in this sco
pe
     float angleRad = M_PI / 2;
                      ^
src\CMakeFiles\aruco.dir\build.make:187: recipe for target 'src/CMakeFiles/aruco
.dir/marker.cpp.obj' failed
mingw32-make[2]: *** [src/CMakeFiles/aruco.dir/marker.cpp.obj] Error 1
CMakeFiles\Makefile2:116: recipe for target 'src/CMakeFiles/aruco.dir/all' faile
d
mingw32-make[1]: *** [src/CMakeFiles/aruco.dir/all] Error 2
Makefile:126: recipe for target 'all' failed
mingw32-make: *** [all] Error 2

C:\aruco-2.0.5\build>mingw32-make
Scanning dependencies of target aruco
[  2%] Building CXX object src/CMakeFiles/aruco.dir/marker.cpp.obj
C:\aruco-2.0.5\src\marker.cpp: In member function 'void aruco::Marker::rotateXAx
is(cv::Mat&)':
C:\aruco-2.0.5\src\marker.cpp:299:22: error: 'M_PI' was not declared in this sco
pe
     float angleRad = M_PI / 2;
                      ^
src\CMakeFiles\aruco.dir\build.make:187: recipe for target 'src/CMakeFiles/aruco
.dir/marker.cpp.obj' failed
mingw32-make[2]: *** [src/CMakeFiles/aruco.dir/marker.cpp.obj] Error 1
CMakeFiles\Makefile2:116: recipe for target 'src/CMakeFiles/aruco.dir/all' faile
d
mingw32-make[1]: *** [src/CMakeFiles/aruco.dir/all] Error 2
Makefile:126: recipe for target 'all' failed
mingw32-make: *** [all] Error 2

我也尝试过用代码块来做,但我得到了完全相同的错误。

4

1 回答 1

0

开发人员已发布修复此问题的新版本 2.0.7。

我为 aruco 做了什么:

  • 在 sourceforge 上下载 .zip
  • 解压
  • 在 aruco-2.0.7 中创建一个构建文件夹
  • 打开 cmake-gui 配置并生成
  • 进入你的构建文件夹
  • 从那里打开一个cmd窗口
  • 输入 mingw32-make

该库应该已正确编译。

如果您的编译器中缺少 omp.h,请在 Internet 上查找源代码并将其添加到 MinGW\include 中的 mingw。你应该准备好了。不要忘记将 aruco 添加到您的路径并重新启动。

如果您使用的是 ide,则必须添加此库,因为它是外部库,但这是另一个问题。

最后,您可能对 c++11 有一些问题。我正在做。如果有人知道如何在 mingw 上允许它(到目前为止我还没有找到任何可以理解的解释)

于 2016-06-15T09:16:27.970 回答