簡體   English   中英

光流開路錯誤

[英]error in optical flow opencv

我試圖在2張圖像中找到光流。 我的代碼提供了以下2個錯誤:

error LNK1120: 1 unresolved externals

error LNK2019: unresolved external symbol "void __cdecl cv::calcOpticalFlowPyrLK(
class cv::_InputArray const &,class cv::_InputArray const &,class cv::_InputArray 
const &,class cv::_OutputArray const &,class cv::_OutputArray const &,class 
cv::_OutputArray const &,class cv::Size_<int>,int,class cv::TermCriteria,double,
int)"(?calcOpticalFlowPyrLK@cv@@YAXABV_InputArray@1@00ABV_OutputArray@1@11V?$Size_
@H@1@HVTermCriteria@1@NH@Z) referenced in function "public: void __thiscall 
optical_flow::optical(void)" (?optical@optical_flow@@QAEXXZ)

代碼如下所示。 請幫我解決這個錯誤。 如果我評論調用calcOpticalFlowPyrLK函數的行,我無法找到原因。 它停止發出此錯誤。

void optical()
    {   
    // Load two images and allocate other structures

        Mat imgA = imread("a.jpg", CV_LOAD_IMAGE_GRAYSCALE);
        Mat imgB = imread("c.jpg", CV_LOAD_IMAGE_GRAYSCALE);
        Size img_sz = imgA.size();
        Mat imgC(img_sz,1);
        int win_size = 15;

        int maxCorners = 20;
        double qualityLevel = 0.05;
        double minDistance = 5.0;
        int blockSize = 3;

        double k = 0.04;
        std::vector<cv::Point2f> cornersA;
        cornersA.reserve(maxCorners);
        std::vector<cv::Point2f> cornersB;
        cornersB.reserve(maxCorners);

        goodFeaturesToTrack( imgA,cornersA,maxCorners,qualityLevel,minDistance,cv::Mat());

        goodFeaturesToTrack( imgB,cornersB,maxCorners,qualityLevel,minDistance,cv::Mat());
        cout<<"Runniung"<<endl;
        cornerSubPix( imgA, cornersA, Size( win_size, win_size ), Size( -1, -1 ),

        TermCriteria( CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 20, 0.03 ) );
        cornerSubPix( imgB, cornersB, Size( win_size, win_size ), Size( -1, -1 ),

        TermCriteria( CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 20, 0.03 ) );

        // Call Lucas Kanade algorithm
        CvSize pyr_sz = Size( img_sz.width+8, img_sz.height/3 );
        std::vector<uchar> features_found;
        features_found.reserve(maxCorners);

        std::vector<float> feature_errors;
        feature_errors.reserve(maxCorners);

        calcOpticalFlowPyrLK( imgA, imgB, cornersA, cornersB, features_found, feature_errors ,Size( win_size, win_size ), 5,cvTermCriteria( CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 20, 0.3 ), 0 );

        // Make an image of the results


        for( int i=0; i < features_found.size(); i++ ){

         cout<<"Error is "<<feature_errors[i]<<endl;

         //continue;
         cout<<"Got it"<<endl;

         Point p0( ceil( cornersA[i].x ), ceil( cornersA[i].y ) );

         Point p1( ceil( cornersB[i].x ), ceil( cornersB[i].y ) );

         line( imgC, p0, p1, CV_RGB(255,255,255), 2 );

         }



         namedWindow( "ImageA", 0 );

         namedWindow( "ImageB", 0 );

         namedWindow( "LKpyr_OpticalFlow", 0 );



         imshow( "ImageA", imgA );

         imshow( "ImageB", imgB );

         imshow( "LKpyr_OpticalFlow", imgC );
         cvWaitKey(0);
        // return 0;

        //return 0;
    }

int _tmain(int argc, _TCHAR* argv[])
{
//  video obj("video.avi");
    optical_flow obj2;
    obj2.optical();
}

忘記鏈接開放opencv_video247.lib

這是@break的評論,它解決了我的問題,而其他人也因為upvotes,這應該作為任何人試圖找出哪個可能是鏈接問題的答案。

對於正在閱讀此內容的任何人,請記住,版本號可能與247不同,並且最后可以有一個d來標記調試版本,因此可能是:

opencv_video<version number>[d].lib

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM