Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

How to find borders and crop the image

In my project, I am try to detect a handwritten character. How to find borders of image based on pixel colour and crop image. I wrote some code but it perfectly crops only at top left side written character. It cannot work proper for all images. My code is

    for (int x = 0; x < bt.getWidth(); x++) {
                    for (int y = 0; y < bt.getHeight(); y++) {




                        if (bt.getPixel(x, y) == Color.BLACK) {
                            if (xmin == 0 && xmax==0)
                                xmin = x;
                            if (ymin == 0 && ymax==0)
                                ymin = y;
                            if (x > xmax && x>xmin) {
                                xmax = x;
                            }
                            if (x < xmin && x < xmax) {
                                xmin = x;
                            }
                            if (y > ymax && y>ymin) {
                                ymax = y;
                            }
                            if (y < ymin && y < ymax) {
                                ymin = y;
                            }
                           // Log.i("pix bef","" + xmin + " " + ymin + " " + xmax + " " + ymax);
                            if((xmin+xmax)>bt.getWidth()){
                                xmax=bt.getWidth()-xmin;
                            }
                            if((ymin+ymax)>bt.getHeight()){
                                ymax=bt.getHeight()-ymin;
                            }
                        }

                    }
                }
                 Rect roi = new Rect(xmin, ymin, xmax, ymax);
                Mat cr = new Mat(mm, roi);

image description image description

The output is accurate at top left only. Getting much weight space at top right. Please solve how to eliminate extra weight space. Thank you.

How to find borders and crop the image

In my project, I am try to detect a handwritten character. How to find borders of image based on pixel colour and crop image. I wrote some code but it perfectly crops only at top left side written character. It cannot work proper for all images. My code is

    for (int x = 0; x < bt.getWidth(); x++) {
                    for (int y = 0; y < bt.getHeight(); y++) {




                        if (bt.getPixel(x, y) == Color.BLACK) {
                            if (xmin == 0 && xmax==0)
                                xmin = x;
                            if (ymin == 0 && ymax==0)
                                ymin = y;
                            if (x > xmax && x>xmin) {
                                xmax = x;
                            }
                            if (x < xmin && x < xmax) {
                                xmin = x;
                            }
                            if (y > ymax && y>ymin) {
                                ymax = y;
                            }
                            if (y < ymin && y < ymax) {
                                ymin = y;
                            }
                           // Log.i("pix bef","" + xmin + " " + ymin + " " + xmax + " " + ymax);
                            if((xmin+xmax)>bt.getWidth()){
                                xmax=bt.getWidth()-xmin;
                            }
                            if((ymin+ymax)>bt.getHeight()){
                                ymax=bt.getHeight()-ymin;
                            }
                        }

                    }
                }
                 Rect roi = new Rect(xmin, ymin, xmax, ymax);
                Mat cr = new Mat(mm, roi);

image description image description

The output is accurate at top left only. Getting much weight space at top right. Please solve how to eliminate extra weight space. Thank you.