冲突原因:
PCL库中的flann文件和OPenCV库中的flann文件重名导致。
解决方案:
修改OPenCV文件中的flann的文件名。
详细步骤:
1、将G:\opencv\build\include\opencv2中的flann文件名改为其他名字(flann2等等,随意)。
2、在配置好环境的前提下重新编译工程。(附简单代码)
#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
String imageName("HappyFish.jpg"); // by default
if (argc > 1)
imageName = argv[1];
Mat image = imread(samples::findFile(imageName), IMREAD_COLOR); // Read the file
if (image.empty()) { // Check for invalid input
cout << "Could not open or find the image" << endl;
return -1;
}
namedWindow("Display window", WINDOW_AUTOSIZE); // Create a window for display.
imshow("Display window", image); // Show our image inside it.
waitKey(0); // Wait for a keystroke in the window
return 0;
}
3、环境配置正常的前提下会有三次报错。分别在features2d.hpp、miniflann.hpp和flann.hpp中,根据提示分别将这三个文件包含的头文件的flann字样改为你前面更改的文件名(如flann2)。
4、更改万所有之后后重新编译,成功运行!
注意:不同版本的OPenCV的flann文件夹所在位置和个数可能不同,可以通过所搜文件夹的方式修改全部flann文件夹的名称,这些名称需要统一。修改完完成后续步骤即可。