首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:未定义对‘`cv::imread(std::string const&,int)’的引用

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

Stack Overflow用户
提问于 2014-08-25 05:25:53
回答 4查看 23.5K关注 0票数 3

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

代码语言:javascript
复制
#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;
}

我的source.pro是

代码语言:javascript
复制
#-------------------------------------------------
#
# Project created by QtCreator 2014-08-24T20:38:56
#
#-------------------------------------------------
INCLUDEPATH += C:\opencv\opencv2.4.9\build\include\
CONFIG(release,debug|release)
{
LIBS += C:\opencv\opencv2.4.9\build\x86\vc11\lib\opencv_calib3d249.lib \
        C:\opencv\opencv2.4.9\build\x86\vc11\lib\opencv_contrib249.lib \
        C:\opencv\opencv2.4.9\build\x86\vc11\lib\opencv_core249.lib \
        C:\opencv\opencv2.4.9\build\x86\vc11\lib\opencv_features2d249.lib \
        C:\opencv\opencv2.4.9\build\x86\vc11\lib\opencv_flann249.lib \
        C:\opencv\opencv2.4.9\build\x86\vc11\lib\opencv_gpu249.lib \
        C:\opencv\opencv2.4.9\build\x86\vc11\lib\opencv_highgui249.lib \
        C:\opencv\opencv2.4.9\build\x86\vc11\lib\opencv_imgproc249.lib \
        C:\opencv\opencv2.4.9\build\x86\vc11\lib\opencv_legacy249.lib \
        C:\opencv\opencv2.4.9\build\x86\vc11\lib\opencv_ml249.lib \
        C:\opencv\opencv2.4.9\build\x86\vc11\lib\opencv_objdetect249.lib \
        C:\opencv\opencv2.4.9\build\x86\vc11\lib\opencv_ts249.lib \
        C:\opencv\opencv2.4.9\build\x86\vc11\lib\opencv_video249.lib
        }
CONFIG(debug,debug|release)
       {
LIBS += C:\opencv\opencv2.4.9\build\x64\vc11\lib\opencv_calib3d249.lib \
        C:\opencv\opencv2.4.9\build\x64\vc11\lib\opencv_contrib249.lib \
        C:\opencv\opencv2.4.9\build\x64\vc11\lib\opencv_core249.lib \
        C:\opencv\opencv2.4.9\build\x64\vc11\lib\opencv_features2d249.lib \
        C:\opencv\opencv2.4.9\build\x64\vc11\lib\opencv_flann249.lib \
        C:\opencv\opencv2.4.9\build\x64\vc11\lib\opencv_gpu249.lib \
        C:\opencv\opencv2.4.9\build\x64\vc11\lib\opencv_highgui249.lib \
        C:\opencv\opencv2.4.9\build\x64\vc11\lib\opencv_imgproc249.lib \
        C:\opencv\opencv2.4.9\build\x64\vc11\lib\opencv_legacy249.lib \
        C:\opencv\opencv2.4.9\build\x64\vc11\lib\opencv_ml249.lib \
        C:\opencv\opencv2.4.9\build\x64\vc11\lib\opencv_objdetect249.lib \
        C:\opencv\opencv2.4.9\build\x64\vc11\lib\opencv_ts249.lib \
        C:\opencv\opencv2.4.9\build\x64\vc11\lib\opencv_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的,所以请帮助我……

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-08-25 05:47:35

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

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

代码语言:javascript
复制
/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
票数 2
EN

Stack Overflow用户

发布于 2016-04-12 01:47:41

对Windows一无所知,但如果它有pkg-config,你应该能够让QMake自动使用它,只需添加

代码语言:javascript
复制
PKGCONFIG += opencv

添加到您的项目文件中(假设您的OpenCV安装了正确的软件包配置文件,就像在正常的平台上一样)。

票数 0
EN

Stack Overflow用户

发布于 2018-06-04 21:41:11

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

代码语言:javascript
复制
g++ main.cpp -o main `pkg-config --libs --cflags opencv`

工作时

代码语言:javascript
复制
g++ -o main `pkg-config --libs --cflags opencv` main.cpp

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25476466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档