0

三天以来,我一直试图弄清楚这一点,但我对 C++ 还是很陌生,而且似乎碰壁了。

我想更改其中一个 opencv 源文件,尤其是 bytefish 编写的 eigenfaces 函数。我想让它返回许多面孔而不是一个。我相信我已经弄清楚了这部分。

问题是,当我重新编译opencv时,无论我使用什么dll,在编译演示面部识别代码时,都会出现几个错误:

SET: IncDir = C:\opencv\build\include
$(INCDIR) = C:\opencv\build\include
SET: LibDir = C:\opencv\build\x86\mingw\lib
$(LIBDIR) = C:\opencv\build\x86\mingw\lib
g++ -I"C:\opencv\build\include" -L"C:\opencv\build\x86\mingw\lib"     facerec_eigenfaces.cpp -lopencv_calib3d243  -lopencv_contrib243 -lopencv_core243     -lopencv_features2d243 -lopencv_flann243 -lopencv_gpu243 -lopencv_highgui243 -lopencv_imgproc243 -lopencv_legacy243 -lopencv_ml243 -lopencv_nonfree243 -lopencv_objdetect243 -lopencv_photo243 -lopencv_stitching243 -lopencv_video243 -lopencv_videostab243 -o facerec_eigenfaces
Process started >>>
C:\Users\Nate\AppData\Local\Temp\ccDRRGhr.o:facerec_eigenfaces.cpp:(.text+0x8a0):     undefined reference to `cv::createEigenFaceRecognizer(int, double)'
C:\Users\Nate\AppData\Local\Temp\ccDRRGhr.o:facerec_eigenfaces.cpp:(.text+0xdf5): undefined reference to `cv::applyColorMap(cv::_InputArray const&, cv::_OutputArray const&, int)'
collect2: ld returned 1 exit status
<<< Process finished.
SET: Libs = -lopencv_calib3d243  -lopencv_contrib243 -lopencv_core243     -lopencv_features2d243 -lopencv_flann243 -lopencv_gpu243 -lopencv_highgui243 -lopencv_imgproc243 -lopencv_legacy243 -lopencv_ml243(...)
$(LIBS) = -lopencv_calib3d243  -lopencv_contrib243 -lopencv_core243 -lopencv_features2d243 -lopencv_flann243 -lopencv_gpu243 -lopencv_highgui243 -lopencv_imgproc243 -lopencv_legacy243 -lopencv_ml243 -lopen(...)
facerec_eigenfaces

我已经看到了几个类似的问题,并且我尝试实现其中列出的所有方法,但无济于事。这是我的第一个 C++ 项目,所以我可能遗漏了一些基本的东西,但看起来通过使用所有的 opencv 指南,它构建的 contrib dll 不正确。

如果我需要在这里包含其他任何内容,我会的。我讨厌这个。

更新

我得到了它的这一部分工作。似乎我正在混合和匹配使用 Visual C 构建的 dll 文件和非可视化 C 构建的文件,我认为这无关紧要,但无论如何,代码都可以工作。

基本上我一直使用 Notepad++ 作为我的 IDE,配置为使用 G++ 和 MinGW 进行编译,然后我用 Visual C 更改了一些文件并尝试将它们插入到我以前的项目中。然后我用记事本++重新编译它会爆炸。

所以为了让它工作,我使用 Visual C 作为我唯一的编辑器。我按照 OpenCV 安装指南 (google) 中的说明构建了它,并且仅使用 Visual C 进行了更改。然后我也使用 Visual C 进行了编译。

我是 C++ 新手,所以如果有人想就发生的事情给出更好的答案,我会投票给它最好的答案。

4

0 回答 0