c++ - iOS 从 openCV cv::Point 获取 CGPoint

标签 c++ ios objective-c opencv cgpoint

enter image description here

在上图中,我们可以看到通过一些openCV算法绘制在图像上的点。

我想在这些点上绘制一个 UIView 点,以便用户可以裁剪它。

我不知道如何访问这些点以便我可以添加 uiview 点。

我尝试读取 cv::Point ,但值只是与坐标高度和宽度不同(更多)。

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;
}

在上面的代码中,drawsquare 方法绘制正方形。我有 NSLog 点 x、y 坐标,但这些值与设备坐标系无关.

有人可以帮助我如何实现它或者替代我的要求。

谢谢

最佳答案

这是在 Swift 3 中。在 Swift 类中,您将 cv::Points 返回到:

  1. 从您的相机 AV Capture Session 获取您正在录制的图像的 xy 尺寸
  2. 将您用来可视化图像的 UIviewxy 维度划分为在 X 和 Y 方向捕获 session 的图像尺寸
  3. 将点的xy 坐标乘以缩放后的xy 维度

{
    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
    }
}

关于c++ - iOS 从 openCV cv::Point 获取 CGPoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30571274/

相关文章:

iphone - 创建 UITextView 全部内容的位图

iphone - UIImagePickerController 推送到我自己的 UINavigationalController 上?

ios - objc_copyClassList : crash EXC_BAD_INSTRUCTION after update to iOS 13. 4/XCode 11.4

objective-c - 如何快速获取应用程序终止通知 cocoa

c++ - 确定从一个点出发的无限直线(一个方向)是否与二维中的线段相交

c++ - 回溯——用硬币填充网格

c++ - gdb 显示类成员的乱码值,尽管代码有效

c++ - 如何在没有 p、q 等的情况下加载 RSA key 对

ios - Storyboard中多个 View Controller 使用的公共(public) View

ios - TCC __TCCAccessRequest_block_invoke