i Problem mit Lichtreflexion haben, hier ist das Bild mit standart Kamera aufgenommenOpenCV Lichtreflexion Reduktion
und Verfahren, die ich tun
1. blur the image
Imgproc.GaussianBlur(blurred, blurred, new Size(17, 17),
Imgproc.BORDER_ISOLATED);
2. create second empty image that using hsv
Imgproc.cvtColor(gray0, gray0, Imgproc.COLOR_BGR2HSV);
3. mix the image color chanel (fromto {0,0})
Core.mixChannels(blurredlist, graylist, fromto);
4. Threshold, Canny, and delate
Imgproc.threshold(gray0, gray0, 126, 255, Imgproc.THRESH_TRUNC);
Imgproc.Canny(gray0, gray0, 50, 70);
Imgproc.dilate(gray0, gray0, Mat.ones(new Size(3, 3), 0));
5. finding the contour
Imgproc.findContours(gray0, contours, new Mat(), Imgproc.RETR_EXTERNAL,
Imgproc.CHAIN_APPROX_SIMPLE);
6. magicall filter for biggest contour and stuff
und hier ist das Ergebnis Wie kann ich die Hintergrundbeleuchtung entfernen oder die gestrichelte Linie von der erkannten Kontur anschließen?
Nun, ich bin neu in Android und noch lernen opencv, inspiriert von einer App erschossen docs https://play.google.com/store/apps/details?id=com.jp.shotdocs, die das Papier erkennen können mit der gleichen Umgebung. frage mich nur, welche Methode sie benutzt haben ... –
Wie es aussieht; Sie nehmen an, dass das, was Sie zu erkennen versuchen, quadratisch ist. Z.B; Sie versuchen, mehrere Zeilen an die Datenpunkte mit der besten Übereinstimmung anzupassen. Wie in diesem Fall können drei der Linien ziemlich einfach angepasst werden (da Sie viele Punkte haben). Die Kante links ist härter, aber immer noch möglich, da nur die "Mitte" unsichtbar ist. – Nallath
Yep, quadratische Erkennung ist es ... wenn der Hintergrund klar und keine Reflexion von Licht, die Genauigkeit ziemlich gut, aber eine Reflexion in der Nähe des Papiers machen es scheitern, das Quadrat zu erkennen. –