首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我无法在openCV中运行camshift演示程序

我无法在openCV中运行camshift演示程序
EN

Stack Overflow用户
提问于 2011-09-13 06:26:19
回答 2查看 4.9K关注 0票数 4

我在VS2010中安装了openCV2.3.1。我可以在openCV中读取图像,没有任何错误。但是,当我从文件夹open/samples/cpp运行camshiftdemo时。它显示了这个错误。

代码语言:javascript
复制
1>  All outputs are up-to-date.
1>main.obj : error LNK2019: unresolved external symbol "class cv::RotatedRect __cdecl cv::CamShift(class cv::_InputArray const &,class cv::Rect_<int> &,class cv::TermCriteria)" (?CamShift@cv@@YA?AVRotatedRect@1@ABV_InputArray@1@AAV?$Rect_@H@1@VTermCriteria@1@@Z) referenced in function _main
1>c:\users\pkru\documents\visual studio 2010\Projects\TestCmean\Debug\TestCmean.exe : fatal error LNK1120: 1 unresolved externals
1>
1>Build FAILED 

当我注释这一行时,// RotatedRect trackBox = CamShift(backproj,trackWindow,TermCriteria( CV_TERMCRIT_EPS error CV_TERMCRIT_ITER,10,1 ));没有错误。

在我的另一段代码中,它显示了如下错误。这是我的测试代码

代码语言:javascript
复制
int main()
{
    // Read reference image
    cv::Mat image= cv::imread("Desert.jpg");
    if (!image.data)
        return 0; 

    // Define ROI
    cv::Mat imageROI= image(cv::Rect(110,260,35,40));
    cv::rectangle(image, cv::Rect(110,260,35,40),cv::Scalar(0,0,255));

    // Display image
    cv::namedWindow("Image");
    cv::imshow("Image",image);

    // Get the Hue histogram
    int minSat=65;
    ColorHistogram hc;
    //cv::MatND colorhist= hc.getHueHistogram(imageROI,minSat);

    ObjectFinder finder;
    //finder.setHistogram(colorhist);
    finder.setThreshold(0.2f);

    // Convert to HSV space
    cv::Mat hsv;
    cv::cvtColor(image, hsv, CV_BGR2HSV);

    // Split the image
    vector<cv::Mat> v;
    cv::split(hsv,v);

    // Eliminate pixels with low saturation
    cv::threshold(v[1],v[1],minSat,255,cv::THRESH_BINARY);
    cv::namedWindow("Saturation");
    cv::imshow("Saturation",v[1]);

    // Get back-projection of hue histogram
    int ch[1]={0};
    cv::Mat result= finder.find(hsv,0.0f,180.0f,ch,1);

    cv::namedWindow("Result Hue");
    cv::imshow("Result Hue",result);

    cv::bitwise_and(result,v[1],result);
    cv::namedWindow("Result Hue and");
    cv::imshow("Result Hue and",result);

    // Second image
    image= cv::imread("Desert.jpg");

    // Display image
    cv::namedWindow("Image 2");
    cv::imshow("Image 2",image);

    // Convert to HSV space
    cv::cvtColor(image, hsv, CV_BGR2HSV);

    // Split the image
    cv::split(hsv,v);

    // Eliminate pixels with low saturation
    cv::threshold(v[1],v[1],minSat,255,cv::THRESH_BINARY);
    cv::namedWindow("Saturation");
    cv::imshow("Saturation",v[1]);

    // Get back-projection of hue histogram
    result= finder.find(hsv,0.0f,180.0f,ch,1);

    cv::namedWindow("Result Hue");
    cv::imshow("Result Hue",result);

    // Eliminate low stauration pixels
    cv::bitwise_and(result,v[1],result);
    cv::namedWindow("Result Hue and");
    cv::imshow("Result Hue and",result);

    // Get back-projection of hue histogram
    finder.setThreshold(-1.0f);
    result= finder.find(hsv,0.0f,180.0f,ch,1);
    cv::bitwise_and(result,v[1],result);
    cv::namedWindow("Result Hue and raw");
    cv::imshow("Result Hue and raw",result);

    cv::Rect rect(110,260,35,40);
    cv::rectangle(image, rect, cv::Scalar(0,0,255));

    cv::TermCriteria criteria(cv::TermCriteria::MAX_ITER,10,0.01);
//  cout << "meanshift= " << cv::meanShift(result,rect,criteria) << endl;

    cv::rectangle(image, rect, cv::Scalar(0,255,0));

    // Display image
    cv::namedWindow("Image 2 result");
    cv::imshow("Image 2 result",image);

    cv::waitKey();
    return 0;
}

当我运行这段代码时,它会显示这个错误。

代码语言:javascript
复制
1>  main.cpp
1>ManifestResourceCompile:
1>  All outputs are up-to-date.
1>main.obj : error LNK2001: unresolved external symbol "int __cdecl cv::meanShift(class cv::_InputArray const &,class cv::Rect_<int> &,class cv::TermCriteria)" (?meanShift@cv@@YAHABV_InputArray@1@AAV?$Rect_@H@1@VTermCriteria@1@@Z)
1>c:\users\pkru\documents\visual studio 2010\Projects\TestCmean\Debug\TestCmean.exe : fatal error LNK1120: 1 unresolved externals
1>
1>Build FAILE
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-13 06:52:10

CamShift和meanShift方法是视频\跟踪模块的一部分,因此您可能忘记了链接opencv_videoXXX.lib

票数 9
EN

Stack Overflow用户

发布于 2017-02-07 07:39:14

在OpenCV 3.2的情况下,添加链接为‘-lopencv_视频’

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

https://stackoverflow.com/questions/7397659

复制
相关文章

相似问题

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