我在QT + Opencv中有一个项目,代码正在运行,但我不得不格式化窗口,现在我又试图再次导入项目并出现此错误。
对`cv :: imread(cv :: String const&,int)'的未定义引用 在这一行:
mat = cv::imread(path);
虽然我的代码看起来像这样:
QString caminho = QFileDialog::getOpenFileName(this, tr("Open File"),
"",
tr("Images (*.png *.tiff)") );
std::string path = caminho.toStdString();
mat = cv::imread(path);
我尝试了其他字符串代码,如" image.png"并没有奏效。
使用OpenCV3,QT5.4,Mingw,Windows8.1
抱歉,我的英文答案 0 :(得分:1)
两个注释:
cv::imread
使用类似“C”的字符串char *
。那条线就像你告诉openCV打开一个名为“path”的文件。您应该将其更改为:mat = cv::imread(path.c_str())
并且它很好!
undefined reference
是编译器没有找到该函数的实现时(m.s.刚刚发布了一个关于该函数的链接)。 GCC(MinGW)正在试图查看“imread”功能的位置。由于您格式化了系统,因此可能需要重置环境变量“PATH”或其他配置路径。我推荐这个阅读:http://www.cs.swarthmore.edu/~newhall/unixhelp/howto_C_libraries.html,它解释了为什么你需要这样做。
希望它有所帮助!