0

I'm new to openCV and find it really difficult to do some even basic stuff so I'll really appreciate Your help.

My problem looks like that:

I have a list of points consisting of geo coordinates (latitude, longitude) in format as (49.074454444, 22.72638888889). Theses points form a polygon but a concave one and what I want to achieve is find concave hull of this polygon.

My idea is to achieve it with use of openCV by drawing this points than using some morphological transformations as dillatation and erosion so that the points form one solid area and than use a findContours method provided by openCV on it.

My first question would be is my approach right? I mean can it be achieved this way?

Now what is my main problem. First of all, all of my points differ only by some 6\th digit and I don't know how to properly "insert" them into Mat because as I believe Mat consists of pixels so rows and columns (ints).

I've tried to do something like this:

int matSize = 100;
Size size = new Size(matSize, matSize);
Mat src= Mat.zeros(size, CvType.CV_8UC1);

List<MatOfPoint> contours = new ArrayList<MatOfPoint>();

for(int i=0; i<listWithPoints.size(); i++){
    Point point = new  Point(listWithPoints.get(i).getLatitude(),listWithPoints.get(i).getLongitude());
    MatOfPoint matOfPoint = new MatOfPoint(point);
    contours.add(matOfPoint);
}

Imgproc.drawContours(src, contours, -1, new Scalar(255, 255, 255),1);

int dillatation_size = 5;
Mat element = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new  Size(2*dillatation_size + 1, 2*dillatation_size +1));
Mat dst = Mat.zeros(size, CvType.CV_8UC1);
Imgproc.dilate(src, dst, element);
List<MatOfPoint> cnt = new ArrayList<>();
Mat hierarchy = new Mat();
Imgproc.findContours(dst, cnt, hierarchy,Imgproc.RETR_TREE,    Imgproc.CHAIN_APPROX_SIMPLE);

But It doesn't work in fact after drawing contour only one point is marked as 255 and it's pixel (49,23) what makes sense.

My final goal is to get back geo coordinates of vertexes of my area hull.

I'll really be gratefull for any help.

mkapiczy
  • 325
  • 3
  • 11
  • I need to find concave hull not convex one. – mkapiczy Apr 14 '16 at 19:53
  • Oh, I misread ;D [This](http://stackoverflow.com/a/29477389/5008845) seems to do what you have in mind. In general, concave hull is a kind of alpha shapes. There's no implementation in OpenCV. – Miki Apr 14 '16 at 19:56
  • Yeah thanks, that's mostly what I want to do but I still don't know how to insert my Double points into Mat object properly without loosing precision :o – mkapiczy Apr 14 '16 at 19:59

0 Answers0