Search code examples
opencvimage-processingaffinetransform

Affine transformation of selected area


I want to create a tool for affine transformation on selected part of image(4 corners polygon, see image link). http://s14.postimg.org/fn9btus8h/explanation.png

I tried to use opencv but without success.

Thanks for help. Regards


Solution

  • Thanks everyone for help. I found solution.

    I used Qt functionality. Here is my code:

    QImage img;
    img.load("D:\\sample.png");
    QPolygonF polygonIn;
    polygonIn  << QPointF(29, 25)
        << QPointF(147, 9)
        << QPointF(210, 100)
        << QPointF(0, 84);
    
    QPolygonF polygonOut;   
    polygonOut  << QPointF(29, 25)
        << QPointF(147, 25)
        << QPointF(210, 132)
        << QPointF(0, 84);
    
    QTransform transform;
    auto isOk = QTransform::quadToQuad(polygonIn, polygonOut, transform);
    if(!isOk)
        throw std::runtime_error("Transformation impossible with such parameters.");
    
    img = img.transformed(transform.toAffine(), Qt::TransformationMode::SmoothTransformation);