안드로이드 OpenCV 관심영역(ROI) 추출
이번 시간에는 OpenCV를 이용하여 관심역영(ROI)을 추출하겠습니다.
관심영역 추출은 문자인식 전처리 기법 중 하나로
인식 할 범위를 대폭 축소시켜 프로그램 전반적인 실행속도를 향상 시키고
인식률 또한 높일 수 있는 전처리 기법입니다.
※ 안드로이드와 OpenCV 연동은 이곳을 참고하세요.
※ SurfaceView와 카메라 연동은 이곳을 참고하세요.
동작 과정
1. SurfaceView에 카메라 화면 출력
2. 캡쳐를 누르면 안드로이드 내부 저장소에 사진이 저장
3. 새로운 액티비티가 실행되며 저장소에 저장된 사진을 불러옴
4. 불러온 사진을 흑백처리, 이진화처리 수행
5. 처리된 사진을 OpenCV 라이브러리 함수로 영역들을 추출해냄
6. 추출된 영역 중 자동차 번호판에 해당하는 영역만 표시
7. 표시된 영역을 따로 결과화면에 출력
8. 출력된 관심영역을 가지고 문자인식 수행
소스코드 입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | List<MatOfPoint> contours = new ArrayList<>(); Mat hierarchy = new Mat(); Imgproc.findContours(imageCny1, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE); for(int idx = 0; idx >= 0; idx = (int) hierarchy.get(0, idx)[0]) { MatOfPoint matOfPoint = contours.get(idx); Rect rect = Imgproc.boundingRect(matOfPoint); if(rect.width < 30 || rect.height < 30 || rect.width <= rect.height || rect.x < 20 || rect.y < 20 || rect.width <= rect.height * 3 || rect.width >= rect.height * 6) continue; // 사각형 크기에 따라 출력 여부 결정 // ROI 출력 Bitmap roi = Bitmap.createBitmap(myBitmap, (int)rect.tl().x, (int)rect.tl().y, rect.width, rect.height); ImageView imageView1 = (ImageView)findViewById(R.id.image_result_ROI); imageView1.setImageBitmap(roi); } image1= Bitmap.createBitmap(img1.cols(), img1.rows(), Bitmap.Config.ARGB_8888); Utils.matToBitmap(img1, image1); // Mat to Bitmap imageView = (ImageView)findViewById(R.id.image_result); imageView.setImageBitmap(image1); } | cs |
실행화면 입니다.
정보가 유익하셨다면 아래 공감버튼 눌러주시면 감사하겠습니다.
질문사항은 댓글로 달아주시면 성의껏 답변해드리겠습니다.
[관련 게시글]
2018/09/05 - [Language/Android] - 안드로이드 findContours 오류 해결
2018/09/03 - [Language/Android] - 안드로이드 OpenCV 설치
2018/08/28 - [Language/Android] - 안드로이드 이미지 뷰 여백 없애기
2018/08/27 - [Language/Android] - 안드로이드 카메라 줌 제어
2018/08/20 - [Language/Android] - [Android] 안드로이드 SurfaceView 카메라 연동하기
2018/08/24 - [Language/Android] - [안드로이드] 실시간 SurfaceView 화면 캡쳐하기
'Android' 카테고리의 다른 글
안드로이드 블루투스 연동 예제 소스 (71) | 2018.09.12 |
---|---|
안드로이드 문자인식 (93) | 2018.09.07 |
안드로이드 텍스트뷰 사용법 (0) | 2018.09.06 |
안드로이드 findContours 오류 해결 (0) | 2018.09.05 |
안드로이드 OpenCV 설치 (2) | 2018.09.03 |
안드로이드 핀치 줌 구현 - 멀티 터치 (0) | 2018.08.29 |
안드로이드 이미지 뷰 여백 없애기 (0) | 2018.08.28 |
안드로이드 카메라 줌 기능 구현 (1) | 2018.08.27 |