在上图中,我们可以看到通过一些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
返回到:
- 从您的相机 AV Capture Session 获取您正在录制的图像的
x
和y
尺寸 - 将您用来可视化图像的
UIview
的x
和y
维度划分为在 X 和 Y 方向捕获 session 的图像尺寸 - 将点的
x
和y
坐标乘以缩放后的x
和y
维度
{
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/