错误:未定义对"cv::imread(std::string const&, int)"的引用



我是Qt的新手,我有一个项目需要在Qt中配置OpenCV,我试图在Qt中运行一个简单的代码,但我得到了这个错误"对cv::imread(std::string const&, int)的未定义参考"这是我的代码…

#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace cv;
int main(){
Mat src,gray;
src=imread("C:/Users/user/Desktop/wood-pattern.png",1);
imshow("gg",src);
cvWaitKey(0);
return 0;
}

和我的来源。Pro

#-------------------------------------------------
#
# Project created by QtCreator 2014-08-24T20:38:56
#
#-------------------------------------------------
INCLUDEPATH += C:opencvopencv2.4.9buildinclude
CONFIG(release,debug|release)
{
LIBS += C:opencvopencv2.4.9buildx86vc11libopencv_calib3d249.lib 
        C:opencvopencv2.4.9buildx86vc11libopencv_contrib249.lib 
        C:opencvopencv2.4.9buildx86vc11libopencv_core249.lib 
        C:opencvopencv2.4.9buildx86vc11libopencv_features2d249.lib 
        C:opencvopencv2.4.9buildx86vc11libopencv_flann249.lib 
        C:opencvopencv2.4.9buildx86vc11libopencv_gpu249.lib 
        C:opencvopencv2.4.9buildx86vc11libopencv_highgui249.lib 
        C:opencvopencv2.4.9buildx86vc11libopencv_imgproc249.lib 
        C:opencvopencv2.4.9buildx86vc11libopencv_legacy249.lib 
        C:opencvopencv2.4.9buildx86vc11libopencv_ml249.lib 
        C:opencvopencv2.4.9buildx86vc11libopencv_objdetect249.lib 
        C:opencvopencv2.4.9buildx86vc11libopencv_ts249.lib 
        C:opencvopencv2.4.9buildx86vc11libopencv_video249.lib
        }
CONFIG(debug,debug|release)
       {
LIBS += C:opencvopencv2.4.9buildx64vc11libopencv_calib3d249.lib 
        C:opencvopencv2.4.9buildx64vc11libopencv_contrib249.lib 
        C:opencvopencv2.4.9buildx64vc11libopencv_core249.lib 
        C:opencvopencv2.4.9buildx64vc11libopencv_features2d249.lib 
        C:opencvopencv2.4.9buildx64vc11libopencv_flann249.lib 
        C:opencvopencv2.4.9buildx64vc11libopencv_gpu249.lib 
        C:opencvopencv2.4.9buildx64vc11libopencv_highgui249.lib 
        C:opencvopencv2.4.9buildx64vc11libopencv_imgproc249.lib 
        C:opencvopencv2.4.9buildx64vc11libopencv_legacy249.lib 
        C:opencvopencv2.4.9buildx64vc11libopencv_ml249.lib 
        C:opencvopencv2.4.9buildx64vc11libopencv_objdetect249.lib 
        C:opencvopencv2.4.9buildx64vc11libopencv_ts249.lib 
        C:opencvopencv2.4.9buildx64vc11libopencv_video249.lib 
}
QT       += core
QT       -= gui
TARGET = Source
CONFIG   += console
CONFIG   -= app_bundle
TEMPLATE = app

SOURCES += main.cpp

我看到了所有的答案,但他们没有工作。我的Qt是32位的,Windows是64位的。我想我的配置是错误的。我遵循了许多教程,但他们不是为OpenCV 2.4.9所以请帮助我…

查看pkg-config opencv --libs的输出,找出您缺少的库,然后将它们添加到您的配置中。

对于我来说,完整的库列表是

/usr/lib64/libopencv_calib3d.so.2.4.8
/usr/lib64/libopencv_contrib.so.2.4.8
/usr/lib64/libopencv_core.so.2.4.8
/usr/lib64/libopencv_features2d.so.2.4.8
/usr/lib64/libopencv_flann.so.2.4.8
/usr/lib64/libopencv_gpu.so.2.4.8
/usr/lib64/libopencv_highgui.so.2.4.8
/usr/lib64/libopencv_imgproc.so.2.4.8
/usr/lib64/libopencv_legacy.so.2.4.8
/usr/lib64/libopencv_ml.so.2.4.8
/usr/lib64/libopencv_nonfree.so.2.4.8    # you don't have this one
/usr/lib64/libopencv_objdetect.so.2.4.8
/usr/lib64/libopencv_photo.so.2.4.8      # this one
/usr/lib64/libopencv_stitching.so.2.4.8  # this one
/usr/lib64/libopencv_superres.so.2.4.8   # and this one
/usr/lib64/libopencv_ts.a
/usr/lib64/libopencv_video.so.2.4.8

不知道Windows,但如果它有pkg-config,你应该能够通过添加

让QMake自动使用它
PKGCONFIG += opencv

到你的项目文件(假设你的OpenCV安装了正确的包配置文件,因为它在相同的平台上)

在我的例子中,它仅仅是参数的顺序,注意

g++ main.cpp -o main `pkg-config --libs --cflags opencv`

工作时

g++ -o main `pkg-config --libs --cflags opencv` main.cpp

没有,因为后者定义了main.cpp在引用 main.cpp之前需要的内容。

我不使用Qt-creator,我使用Vim代替,所以我创建了自己的命令,工作得很好。这是我的cv2run自定义命令内容:

 #!/bin/bash 
file=$@
if [ "${file: -4}" = ".cpp"  ]; then 
        g++ $file -I/opt/robots/pepper/ctc-linux64-atom-2.5.10.7/opencv2/include/ -L/opt/robots/pepper/ctc-linux64-atom-2.5.10.7/opencv2/lib -lopencv_core -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_videoio 
    if $status ; then 
        ./a.out && rm -rf a.out
    fi
else
    echo "This Command should be used only with cpp files that uses the opencv library !!"
fi 

相关内容

最新更新