Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS get CGPoint from openCV cv::Point

enter image description here

In the above image ,we can see point which are drawn on image ,by some openCV algorithm.

I want to draw a UIView point on those points ,so that user can crop it.

I am not getting how will I access those points so that i can add uiview points.

I tried to read the cv::Point ,but value are just different(more) to the co-ordinate height and width.

static cv::Mat drawSquares( cv::Mat& image, const std::vector<std::vector<cv::Point> >& squares )
{

    int max_X=0,max_Y=0;
    int min_X=999,min_Y=999;
    for( size_t i = 0; i < squares.size(); i++ )
    {
        const cv::Point* p = &squares[i][0];
        int n = (int)squares[i].size();

        NSLog(@"Squares%d %d %d",n,p->x,p->y);

        polylines(image, &p, &n, 1, true, cv::Scalar(0,255,0), 3, cv::LINE_AA);

    }


    return image;
}

In above code ,drawsquare method draw the squares .I have NSLog the point x, y co-ordinates but these values are not w.r.t to device co-ordinate system.

Can someone help me how it can be achieved Or an alternative to my requirement.

Thanks

like image 695
Mukesh Avatar asked Jun 01 '15 10:06

Mukesh


1 Answers

This is in Swift 3. In the Swift class that you're returning the cv::Points to:

  1. Get the x and y dimensions of the image you're recording from your camera AV Capture Session
  2. Divide the x and y dimension of the UIview you're using to visualize the image by the capture session's image dimensions in the X and Y
  3. Multiply the point's x and y coordinates by the scaled x and y dimensions

{
    let imageScaleX = imgView.bounds.width/(newCameraHelper?.dimensionX)!
    let imageScaleY = imgView.bounds.height/(newCameraHelper?.dimensionY)!
    for point in Squares {
       let x = point.x * imageScaleX
       let y = point.y * imageScaleY
    }
}
like image 100
pale bone Avatar answered Sep 19 '22 20:09

pale bone