很久以前我就使用过OpenCV 3.2.0。 最近,我需要使用地标检测来实现人脸检测,因此我决定再次使用额外的OpenCV模块来构建OpenCV。 但是,似乎OpenCV 3.2.0与最新的额外OpenCV模块不兼容,因此我必须使用最新的OpenCV(即4.0.0)来构建它。
问题是,我处于Catch 22的情况。
1。如果我使用mingw 32位5.1.0构建OpenCV(与Qt捆绑在一起的编译器),则会出现以下错误
CMakeFiles \ opencv_core.dir / objects.a:成员 存档中的CMakeFiles \ opencv_core.dir / objects.a(vs_version.rc.obj)为 不是对象
2。如果我使用mingw 64位8.1.0来构建OpenCV,则可以正常工作。但是,有两种情况会给我一个错误。
2.1。如果我使用mingw 32位5.1.0与那些OpenCV库一起构建Qt项目,则会出现以下错误。
D:\ opencv-build \ bin \ libopencv_core400.dll:-1:错误:文件不存在 识别:无法识别文件格式
我怀疑这与32-64位问题有关。编译器可能需要32位的库,但是这些库是64位的格式,因为用于构建OpenCV的编译器是64位的mingw。
file format pei-i386
file format pei-x86-64
第一个是我过去使用的OpenCV 3.2.0库的文件格式,并且可以在Qt上正常工作。 第二个是新构建的OpenCV 4.0.0库的文件格式。
2.2如果我使用mingw 64位8.1.0与那些OpenCV库一起构建Qt项目,则会出现以下错误。
collect2.exe:错误:ld返回5退出状态
我怀疑这是因为Qt基本上是32位而不是64位。
我想做的是构建OpenCV 4.0.0,以便这些OpenCV库的文件格式某种程度上是pei-i386,而不是pei-x86-64。 我该如何实现?