drawContours alrededor del documento detectado usando opencv para Android da un error extraño
Soy nuevo en OpenCv4Android. Estoy tratando de detectar automáticamente el documento usando OpenCv4Android sdk. Inicialmente, he pasado por el tema de la cámara horizontal opencv. De alguna manera logré cambiar la orientación de opencv JavaCameraview a vertical. Hice los siguientes cambios en las clases predeterminadas de opencv sdk para orientar la cámara opencv en vertical:
1 enCameraBridgeViewBase clase
Matrix matrix = new Matrix();
matrix.setRotate(90f);
Bitmap bitmap = Bitmap.createBitmap(mCacheBitmap, 0, 0, mCacheBitmap.getWidth(), mCacheBitmap.getHeight(), matrix, true);
2) ahora en el método drawbitmap reemplaza arribamapa de bits conmCacheBitmap
3) ahora, enJavaCameraView clase
if ((getLayoutParams().width == ActionBar.LayoutParams.MATCH_PARENT) && (getLayoutParams().height == ActionBar.LayoutParams.MATCH_PARENT))
mScale = Math.min(((float)height)/mFrameWidth, ((float)width)/mFrameHeight);
else
mScale = 0;
Después de los cambios anteriores, puedo orientar la cámara en modo vertical. Pero, teniendo un problema extraño en la detección de documentos. Ver abajo las imágenes
Como puede ver en la primera imagen, antes de la personalización puedo detectar papel en color verde completo. Y en la segunda imagen puedes ver el error de dibujar la línea (drawContours) alrededor del papel
Lo que sigo para detectar el papel es:GaussianBlur -> Detección de bordes de Canny -> findContours -> drawContour
En el método OnCameraFrame:
mRgba = inputFrame.rgba();
Mat mGray = new Mat();
Mat edged = new Mat();
Imgproc.cvtColor(mRgba,mGray,Imgproc.COLOR_BGR2GRAY);
Imgproc.GaussianBlur(mRgba,mGray,new Size(5,5),0);
-> y luego encontrar contornos
Imgproc.findContours(edged, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
-> Luego encontré el contorno más grande y, finalmente, el drawContours en ese
Imgproc.drawContours(mRgba, contours, maxI, new Scalar(0, 255, 0), 5);
No sé donde estoy equivocado ..! Por favor, ayúdame a resolver este extraño problema.
@Rick M. a continuación se muestra la imagen original:
@ ilke444, la siguiente es la imagen después de la detección de bordes, que es perfectamente lo que quiero: