gpt4 book ai didi

c++ - 使用 OpenCV CascadeClassifier 时函数 _main 中引用的未解析外部符号

转载 作者:搜寻专家 更新时间:2023-10-31 02:21:53 24 4
gpt4 key购买 nike

我一直在尝试执行下面的代码,但无法编译它。我通过将一些行屏蔽为注释来搜索错误。最后我到达了CascadeClassifier face_cascade;通过删除所有其他行face_cascade.load to rectangle(image,faces[i],Scalar(0,125,165),2,8,0); 但我不明白错误是什么!我是否以错误的方式声明了 CascadeClassiier?

提前谢谢你。

#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include<opencv2/features2d/features2d.hpp>
#include<iostream>
#include<stdio.h>

using namespace std;
using namespace cv;

int main()
{
Mat image=imread("taylor_swift.jpg");
imshow( "input", image );
cvtColor(image,image,CV_BGR2GRAY);
equalizeHist( image,image );

CascadeClassifier face_cascade;
face_cascade.load( "haarcascade_frontalface_alt2.xml" );

// Detect faces
vector<Rect> faces;
face_cascade.detectMultiScale(image,faces,1.5,3,0 |CV_HAAR_SCALE_IMAGE);

for(size_t i=0;i<faces.size();i++ )
{

rectangle(image,faces[i],Scalar(0,125,165),2,8,0);
}

imshow( "Detected Face", image );

waitKey();
return 0;
}

编辑:

Error   1   error LNK2019: unresolved external symbol "public: virtual __thiscall cv::CascadeClassifier::~CascadeClassifier(void)" (??1CascadeClassifier@cv@@UAE@XZ) referenced in function _main   C:\Users\vamsidhar muthireddy\documents\visual studio 2010\Projects\OPEN_CV_TEST\OPEN_CV_TEST\main.obj

Error 2 error LNK2019: unresolved external symbol "public: __thiscall cv::CascadeClassifier::CascadeClassifier(void)" (??0CascadeClassifier@cv@@QAE@XZ) referenced in function _main C:\Users\vamsidhar muthireddy\documents\visual studio 2010\Projects\OPEN_CV_TEST\OPEN_CV_TEST\main.obj

Error 3 error LNK1120: 2 unresolved externals C:\Users\vamsidhar muthireddy\documents\visual studio 2010\Projects\OPEN_CV_TEST\Debug\OPEN_CV_TEST.exe 1

最佳答案

您一定会看到这样的编译器错误:

/tmp/cckqEgtd.o: In function `main':
face.cpp:(.text+0x50): undefined reference to `cv::imread(std::string const&, int)'
face.cpp:(.text+0x87): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
face.cpp:(.text+0xca): undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)'
face.cpp:(.text+0x101): undefined reference to `cv::_OutputArray::_OutputArray(cv::Mat&)'
face.cpp:(.text+0x11a): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
face.cpp:(.text+0x13a): undefined reference to `cv::cvtColor(cv::_InputArray const&, cv::_OutputArray const&, int, int)'
face.cpp:(.text+0x153): undefined reference to `cv::_OutputArray::_OutputArray(cv::Mat&)'
face.cpp:(.text+0x16c): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
face.cpp:(.text+0x185): undefined reference to `cv::equalizeHist(cv::_InputArray const&, cv::_OutputArray const&)'
face.cpp:(.text+0x194): undefined reference to `cv::CascadeClassifier::CascadeClassifier()'
face.cpp:(.text+0x1d7): undefined reference to `cv::CascadeClassifier::load(std::string const&)'
face.cpp:(.text+0x275): undefined reference to `cv::CascadeClassifier::detectMultiScale(cv::Mat const&, std::vector<cv::Rect_<int>, std::allocator<cv::Rect_<int> > >&, double, int, int, cv::Size_<int>, cv::Size_<int>)'
face.cpp:(.text+0x32a): undefined reference to `cv::rectangle(cv::Mat&, cv::Rect_<int>, cv::Scalar_<double> const&, int, int, int)'
face.cpp:(.text+0x36c): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
face.cpp:(.text+0x3af): undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)'
face.cpp:(.text+0x3d7): undefined reference to `cv::waitKey(int)'
face.cpp:(.text+0x3fa): undefined reference to `cv::CascadeClassifier::~CascadeClassifier()'
face.cpp:(.text+0x4f3): undefined reference to `cv::CascadeClassifier::~CascadeClassifier()'
/tmp/cckqEgtd.o: In function `cv::Mat::~Mat()':
face.cpp:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x39): undefined reference to `cv::fastFree(void*)'
/tmp/cckqEgtd.o: In function `cv::Mat::release()':
face.cpp:(.text._ZN2cv3Mat7releaseEv[_ZN2cv3Mat7releaseEv]+0x47): undefined reference to `cv::Mat::deallocate()'
collect2: error: ld returned 1 exit status

当您没有将可执行文件链接到所需的库时,就会发生这种 undefined reference 错误。

如果你在 linux 机器上,那么你可以使用它来编译你的代码。

g++ face.cpp `pkg-config opencv --libs`

编辑:

看看http://docs.opencv.org/doc/tutorials/introduction/windows_visual_studio_Opencv/windows_visual_studio_Opencv.html . OpenCV 文档中的此链接解释了如何使用 OpenCV 配置 Visual Studio

这是一个属性表,你可以根据你的设置使用它来配置 visual studio https://raw.githubusercontent.com/OpenNI2-Book/openni2book/master/props/OpenCV.props

您可能需要根据您的安装目录更改一些路径。此外,您还必须根据您拥有的 opencv 版本更改库名称。例如,如果您有 OpenCV 2.4.10,那么您将替换 opencv_core246.libopencv_core2410.lib 等等。

关于c++ - 使用 OpenCV CascadeClassifier 时函数 _main 中引用的未解析外部符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30920601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com