wykrywanie kola na obrazie

0

Witam,

Mam straszny problem z pewnym programem i nie mogę znaleźć rozwiązania Dodany obrazek
Muszę wykryć koło na zdjęciu/obrazie i najlepiej wypisać jego średnicę. Stworzyłam prosty programik w JAVIE wgrywający zdjęcie z pliku i dalej nie wiem jak ruszyć. Proszę o jakąkolwiek pomoc, przewaliłam setki stron internetowych i wszystko jest dla mnie albo kompletnie niezrozumiałe, albo po prostu nie działa. Jeśli ktoś wie jak rozwiązać to w prosty sposób, proszę o pomoc.

Pozdrawiam.

1

http://opencv-code.com/tutorials/detecting-simple-shapes-in-an-image/

Uzyj wrappera na jave do tej biblioteki, przepisanie na jave nie powinno byc problemem, jak i pozniejsze wyciaganie srednicy.

0

a można by odrobinę bardziej szczegółowo ? jak uzyc tego wrappera, skąd go wziąć ? jestem zielona w takich sprawach.

0

a skąd mam pobrać wrapper do biblioteki OPENCV na Javę ?

4

-_-'

#Instalujesz OpenCV (tj. rozpakowujesz to co mozna pobrac u nich na stronie zrodlowej)
#Kopiujesz gdzies *.dll i *.jar zeby byly w CP.
#Piszesz kod, na przyklad:

import org.opencv.core.*;
import static org.opencv.highgui.Highgui.*;
import static org.opencv.imgproc.Imgproc.*;

public class Main {
  static {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
  }

  public static void main(String[] args) {
    if(args.length != 1) {
      return;
    }

    Mat image = imread(args[0], 1);
    if(image == null) {
      System.out.println("reading error");
      return;
    }

    Mat imageGray = new Mat();
    cvtColor(image, imageGray, COLOR_BGR2GRAY);

    GaussianBlur(imageGray, imageGray, new Size(9, 9), 2, 2);

    Mat circles = new Mat();
    HoughCircles(imageGray, circles, CV_HOUGH_GRADIENT, 2, imageGray.rows()/4);

    for(int i = 0; i < circles.cols(); i++) {
      double buf[] = circles.get(0, i);
      if(buf == null) {
        continue;
      }

      Point center = new Point(Math.round(buf[0]), Math.round(buf[1]));
      int radius = (int)Math.round(buf[2]);
      Core.circle(image, center, radius, new Scalar(0, 0, 255), 3, 8, 0);
    }

    if(imwrite(args[0], image) == false) {
      System.out.println("writing error.");
    }
  }
}

Efekt:
Z czegos takiego:
92c46b41b6.png

Na cos takiego:
7b615fa654.png

1 użytkowników online, w tym zalogowanych: 0, gości: 1