ho problema con la riflessione della luce, ecco la foto scattata con la fotocamera standartOpenCV riduzione della luce riflessione
e processo che faccio
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
ed ecco il risultato come posso rimuovere la retroilluminazione o collegare la linea spezzata dal contorno rilevato?
beh, sono nuovo su Android e sto ancora imparando su opencv, ispirato a un'app shot doc https://play.google.com/store/apps/details?id=com.jp.shotdocs in grado di rilevare la carta con lo stesso ambiente. mi chiedo solo, che metodo hanno usato ... –
Per l'aspetto di esso; presumono che la cosa che stai cercando di rilevare sia quadrata. Per esempio; Cercano di adattare diverse linee ai punti dati con la migliore corrispondenza. Come in questo caso, tre delle linee possono essere montate abbastanza facilmente (dato che hai molti punti). Il bordo a sinistra è più difficile, ma ancora possibile poiché solo il "centro" è invisibile. – Nallath
sì, il rilevamento quadrato è ... se lo sfondo è chiaro e non ha alcun riflesso di luce, la precisione è abbastanza buona ma, un riflesso vicino alla carta non riesce a riconoscere il quadrato. –