Imgproc.getRectSubPix not working/giving errors [closed]

asked 2015-05-25 11:58:51 -0600

updated 2015-05-25 13:49:28 -0600

PS:Sorry for reposting, but i get internal server error when i try to see my last post.

I work on a thesis and for 3 days consecutive i'm held back by an error in my code that , for the love of god, can't seem to fix it.

The ideea is simple, i have a map with 3 black corners(exactly like the QR code). I get the 3 black corners center coordinates and the last point's coordinate(Point D) I want to exctract this area to a file in a way to have the map always pointed at an agnle of 0, 90, 180, 270,360 degrees. I've searched the internet and found a solution involving RotatedRectangle. Here's some code that works :

public static RotatedRect getRotatedRect(List<Point> orderedPointList, Point D){// here i have as parameters Points(in this order) Top Right and Bottom + the final calculated point(Point D);
    if(orderedPointList==null)
        return null;
    RotatedRect rect = new RotatedRect();
    Point Top = orderedPointList.get(0);
    Point Right = orderedPointList.get(1);
    Point Bottom = orderedPointList.get(2);
    Point[] points= new Point[]{Top,Right,D,Bottom};
    rect.points(points);
    Point Center = new Point();
    Center.x=(Bottom.x+Right.x)/2;
    Center.y=(Bottom.y+Right.y)/2;
    rect.center = Center;
    double diference1=Top.x-Bottom.x;
    double difference2=Top.y-Bottom.y;
    double angle=Math.atan(diference1-difference2) * 180/Math.PI;// this formula is used to see how much the map is rotated untill now i haven't tested it for all degrees but as i see it returns -180 0 180.
    rect.angle=angle;
    double mapwidth=Math.sqrt((Right.x-Top.x)*(Right.x-Top.x)+(Right.y-Top.y)*(Right.y-Top.y));
    double mapheight=Math.sqrt((Bottom.x-Top.x)*(Bottom.x-Top.x)+(Bottom.y-Top.y)*(Bottom.y-Top.y));
    rect.size.width=mapwidth;
    rect.size.height=mapheight; // here i set the RotatedRectangle width and height.
    return rect;
}

The following code, however doesn't work no matter what i do:

public static Mat getRotatedRectMat(Mat mImage,RotatedRect rect){
    if(rect==null)
        return null;
     Mat M  = new Mat();
     Mat rotated = new Mat();
     Mat clone=mImage.clone();
     //clone.convertTo(clone, CvType.CV_32F);
     //rotated.convertTo(rotated, CvType.CV_32F);
     // perform the affine transformation
     Rect boundingRect = rect.boundingRect();
     if(boundingRect.x >= 0 && boundingRect.y >=0
             && (boundingRect.x+boundingRect.width) < clone.cols() &&  
               (boundingRect.y+boundingRect.height) < clone.rows() ){
         Mat cropped=new Mat();
         M = Imgproc.getRotationMatrix2D(rect.center, rect.angle, 0.5);
         Imgproc.warpAffine(clone, rotated, M, clone.size(), Imgproc.INTER_AREA);
         Imgproc.getRectSubPix(rotated, rect.size, rect.center, cropped);//CRASHES exactly right here
reason:Noone knows
         return cropped;

     }

Some thing's i've tried from stackoverflow& other sites: http://stackoverflow.com/questions/28... How do I calculate relative time?... - this is the closest result i'd want to get but i have no ideea how to do it in OpenCV4Android

Edit: Did a trycatch on the error, here's the error message cv::Exception: /home/reports/ci/slave_desktop/50-SDK/opencv/modules/imgproc/src/samplers.cpp:556: error: (-210) in function void ... (more)

edit retag flag offensive reopen merge delete

Closed for the following reason question is not relevant or outdated by sturkmen
close date 2020-09-17 06:48:54.909621

Comments

if you only can say: "doesn't work" - that's very poor.

berak gravatar imageberak ( 2015-05-25 12:46:02 -0600 )edit

Added a link to stackoverflow with a similar thing and ther you have the logs. http://stackoverflow.com/questions/28...

muntianucristian gravatar imagemuntianucristian ( 2015-05-25 13:09:37 -0600 )edit

^^ not valid idea here. your so questions does not interest anyone here.

berak gravatar imageberak ( 2015-05-25 13:13:30 -0600 )edit

Aham, this is your ideea of a constructive "comment" ? Can you help me or you just came here hoping u get free coment points?

muntianucristian gravatar imagemuntianucristian ( 2015-05-25 13:26:03 -0600 )edit

you don't get any points for comments here, and all i'm trying is to get you to improve your question.

again, it does not help, if you're explaining parts of your question here on SO.

as long as you can't clearly specify, what's wrong with the code in question, - noone can help.

again, if there were errors, - what exactly ? if the result wasn't what you expected, - how so ? you need to explain.

berak gravatar imageberak ( 2015-05-25 13:29:42 -0600 )edit

Well, posted the message i got, should i print the stacktrace too? Also sorry for jumping on ya, first time i request help online, and i'm used with trolls from gaming :D

muntianucristian gravatar imagemuntianucristian ( 2015-05-25 13:52:37 -0600 )edit

Found the answer, will post it tomorrow(can't post it now)

muntianucristian gravatar imagemuntianucristian ( 2015-05-25 14:56:25 -0600 )edit