Failed to implement lkdemo on iOS [closed]

asked 2018-01-24 21:08:04 -0500

mahdidham gravatar image

I tried to implement lkdemo's cpp example in iOS, and got reference from thorrson's lkdemo. I just use goodFeaturesToTrack() to automatically detect features for tracking. All the stuff processed in processImage: method based on iOS documentation but the features are not tracking properly. The first features are detected and appear in cameraview but never tracked, and i try to debug the calcOpticalFlowPyrLK but it still working. Is there something wrong? Here's my code on processImage methods:

- (void)processImage:(cv::Mat &)image

    Mat curntImage, curntGray, prevGray;
    cvtColor(image, curntGray, CV_BGR2GRAY);
    if (!isDetected) {

        goodFeaturesToTrack(curntGray, features[1], maxCorners, qualityLevel, minDistance);
        cornerSubPix(curntGray, features[1], subPixWinSize, cv::Size(-1,-1), termcrit);

        isDetected = YES;

        NSLog(@"Feature detected!");

    } else if (!features[0].empty()) {

        vector<uchar> status;
        vector<float> err;

        if(prevGray.empty()) {

        calcOpticalFlowPyrLK(prevGray, curntGray, features[0], features[1], status, err, winSize,
                     3, termcrit, 0, 0.001);

        int radius = 10; // 4, 3, 5, 10
        RNG rng(12345);
        Scalar color = Scalar(rng.uniform(0,255), rng.uniform(0,255),

        size_t i, k;
        for (i=k=0; i < features[1].size(); i++) {

            if (!status[i])

            features[1][k++] = features[1][i];
            circle(image,features[1][i], radius, color, -1, 8); //...-1, 8, 0);


        //NSLog(@"Feature tracked on iteration");

    dispatch_async(dispatch_get_main_queue(), ^{
        self.cameraView.image = [UIImage UIImageFromCVMat:image];

    std::swap(features[0], features[1]);
    cv::swap(curntGray, prevGray);
edit retag flag offensive reopen merge delete

Closed for the following reason question is off-topic or not relevant by mahdidham
close date 2018-01-25 19:03:27.114147