Search code examples
phpgraphicscoordinatesimagickedge-detection

php - how to find coordinates of edges in an image using imagick or other library?


given an image composed of a plain black field with a single white rectangle inside it somewhere, how can i extract the coordinates of the rectangle ? i've googled and googled and found numerous articles on edge detection using hough lines, convolution, morphology, etc., but all of these actually edge the image or convert it in some way. i don't want to change the image, all i want to do is find where the edges are.

obviously, i could simply iterate over the entire width+height of the image and look at the pixel colours (as some posts suggest), but that seems horribly inefficient. is there no built-in algorithm ? it seems like this must be part of imagick somewhere, otherwise how could it actually find and draw the edges of internal images ? but i'm having trouble finding out how to get at it.


Solution

  • $base = new Imagick(realpath('./trim.png'));
    $base->trimImage(0);
    // get the new image size
    $geometry = $base->getImageGeometry();
    // Retrieve the trim info
    $pageInfo = $base->getImagePage();
    

    A similar example is on the manual page: http://php.net/manual/en/imagick.trimimage.php#111332