Преобразовать реальные координаты изображения в формат? - PullRequest
0 голосов
/ 28 июня 2018

Например: пользователь выбирает 1000 * 1000 изображений, которые я посылаю бэкэнду для обнаружения объекта, поэтому я получаю координаты объекта, который присутствует на изображении.

Like this :(
                {
            x = 385;
            y = 249;
        },
                {
            x = 448;
            y = 242;
        },
                {
            x = 454;
            y = 276;
        },
                {
            x = 391;
            y = 284;
        }
    );

Я устанавливаю вид изображения в соответствии с форматом изображения, чтобы фактический размер изображения варьировался, поэтому в зависимости от размера аспекта мне нужно изменить координаты для соответствия размеру изображения.

Это код, который я пробовал.

var topLeftXOne = point[0]["x"] as! CGFloat
var topLeftYOne = point[0]["y"] as! CGFloat
var topRightXOne = point[1]["x"] as! CGFloat
var topRightYOne = point[1]["y"] as! CGFloat
var bottomtopRightXOne = point[2]["x"] as! CGFloat
var bottomRightYOne = point[2]["y"] as! CGFloat

 var bottomLeftXOne = point[3]["x"] as! CGFloat
 var bottomLeftYOne = point[3]["y"] as! CGFloat

  let pointsView = ALPDView(frame: CGRect.zero)
  let x: CGRect = AVMakeRect(aspectRatio: image.size, insideRect: pointsView.imageView.frame)

 let scaleX = image.size.width / x.width
 let scaleY = image.size.height / x.height

 topLeftXOne = topLeftXOne / scaleX
 topLeftYOne = topLeftYOne / scaleY

 topRightXOne = topRightXOne / scaleX
 topRightYOne = topRightYOne / scaleY

 bottomtopRightXOne = bottomtopRightXOne / scaleX
 bottomRightYOne = bottomRightYOne / scaleY

 bottomLeftXOne = bottomLeftXOne / scaleX
 bottomLeftYOne = bottomLeftYOne / scaleY

Но я не получаю должного результата.

enter image description here

Это, например, изображение, я хочу изменить координаты в соответствии с размером изображения аспекта.

1 Ответ

0 голосов
/ 28 июня 2018

Наконец я добился этого, используя метод отношения. Я взял соотношение сторон размера изображения и рассчитал по соотношению математика.

let x: CGRect = AVMakeRect (aspectRatio: image.size, insideRect: pointsView.imageView.frame)

let scaleX = image.size.width / x.width

let scaleY = image.size.height / x.height

                        var topLeftXOne = point[0]["x"] as! CGFloat
                        var topLeftYOne = point[0]["y"] as! CGFloat

                        var topRightXOne = point[1]["x"] as! CGFloat
                        var topRightYOne = point[1]["y"] as! CGFloat

                        var bottomtopRightXOne = point[2]["x"] as! CGFloat
                        var bottomRightYOne = point[2]["y"] as! CGFloat

                        var bottomLeftXOne = point[3]["x"] as! CGFloat
                        var bottomLeftYOne = point[3]["y"] as! CGFloat

                        let pointsView = ALPDView(frame: CGRect.init(x: 0, y: 0, width:self.view.frame.size.width , height: self.view.frame.size.height))

                        let additionValueForX = x.origin.x + 20
                        let additionValueForY = x.origin.y - 40

                        topLeftXOne = topLeftXOne / scaleX + additionValueForX
                        topLeftYOne = topLeftYOne / scaleY + additionValueForY

                        topRightXOne = topRightXOne / scaleX + additionValueForX
                        topRightYOne = topRightYOne / scaleY + additionValueForY

                        bottomtopRightXOne = bottomtopRightXOne / scaleX + additionValueForX
                        bottomRightYOne = bottomRightYOne / scaleY + additionValueForY

                        bottomLeftXOne = bottomLeftXOne / scaleX + additionValueForX
                        bottomLeftYOne = bottomLeftYOne / scaleY + additionValueForY
...