Transformation de perspective pour le redressement
Pour obtenir un effet de redressement sur un ensemble de points à l'aide de la transformation de perspective, il est essentiel de comprendre ce qui suit :
Ordre des points :
L'ordre des points compte dans transformation des perspectives. Pour garantir l'exactitude, l'ordre doit être cohérent dans les vecteurs source et de destination.
Taille de l'image :
Si vous souhaitez que l'image résultante contienne uniquement l'objet de intérêt, définissez sa largeur et sa hauteur pour qu'elles correspondent aux dimensions du rectangle obtenu.
Performance Considérations :
Pour les transformations affines telles que la rotation, le redimensionnement et le redressement, il est plus efficace d'utiliser les homologues affines :
Affin Transform :
getAffineTransform() ne nécessite que trois points et fournit une matrice 2x3, tandis que warpAffine() effectue la déformation.
Redimensionnement de l'image résultante :
Pour redimensionner l'image résultante à une taille différente de celle de l'entrée, utiliser :
cv::Size size(box.boundingRect().width, box.boundingRect().height); cv::warpPerspective(src, dst, size, ... );
Exemple :
vector<Point> not_a_rect_shape; not_a_rect_shape.push_back(Point(408, 69)); not_a_rect_shape.push_back(Point(72, 2186)); not_a_rect_shape.push_back(Point(1584, 2426)); not_a_rect_shape.push_back(Point(1912, 291)); RotatedRect box = minAreaRect(cv::Mat(not_a_rect_shape)); Point2f pts[4]; box.points(pts); Point2f src_vertices[3]; src_vertices[0] = pts[0]; src_vertices[1] = pts[1]; src_vertices[2] = pts[3]; Point2f dst_vertices[3]; dst_vertices[0] = Point(0, 0); dst_vertices[1] = Point(box.boundingRect().width-1, 0); dst_vertices[2] = Point(0, box.boundingRect().height-1); Mat warpAffineMatrix = getAffineTransform(src_vertices, dst_vertices); cv::Size size(box.boundingRect().width, box.boundingRect().height); warpAffine(src, rotated, warpAffineMatrix, size, INTER_LINEAR, BORDER_CONSTANT);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!