본문 바로가기

728x90
반응형

전체 글

(161)
[OpenCV] ROI 영역 그려서 마스크 이미지 만들기 관심 영역(ROI)을 추출해내기 위해서는 두 개의 데이터가 필요한데 그것은 원본 이미지와 마스크 이미지이다. 알고리즘을 간단하게 이야기하자면, 원본 이미지에 마스크 이미지를 올려 마스크 이미지에서 (보통) 검정색이 아닌 흰색으로 된 부분에 해당하는 원본 이미지 색깔 정보를 추출해 ROI 영역만 활성화시킨다. 그렇다면 마스크 이미지는 어떻게 구하는가? 질문의 대답은 사람이 하나하나 ROI 영역을 지정해야 한다. ROI 영역을 그리는 방법이 여러가지 있겠지만, 이 글에서는 OpenCV를 통해 이미지를 윈도우에 띄우고 마우스 클릭 이벤트를 사용해 ROI 영역을 지정해 마스크 이미지를 만드는 방법을 알아보자. 그전에 opencv 라이브러리를 다운로드하고 파이썬에 import하자. (*cv2 패키지는 존재하지 않..
[GIS/Folium] Folium을 사용해 지도 그리기 국립공원공단 프로젝트를 진행하는 도중에 map을 그려야 될 상황이 되었는데 Python 언어로 map을 그리기 적절한 라이브러리가 무엇이 있을까 고민하다가 멘토께서 Folium을 추천해주셔서 사용을 했다. 우선 다운로드를 하자. pip install folium 그런 다음에 지도 객체를 만들기 위해 folium.Map()을 호출한다. location, zoom_start, width, height 속성이 있는데 loaction은 처음 지도가 위치한 [위도, 경도]이며 zoom_start는 시작 배율이다. width와 height는 쉽게 알 수 있듯이 가로와 세로 크기를 의미한다. 따라서 코드는 다음과 같다. *창 활성화시 대한민국을 창 크기에 맞게 딱 보고 싶다면 loaction으로 [36.684273,..
[Scipy] scipy 라이브러리를 사용해 mat 파일 읽어오기 프로젝트 진행 도중에 관심 영역을 뽑기 위한 마스크 정보가 mat 파일에 있어 이를 가져오기 위해서는 scipy 라이브러리에 있는 loadmat을 통해 쉽게 읽어 올 수 있다. 우선 다음 명령어로 scipy 라이브러리를 설치한다. pip install scipy 그리고 loadmat을 통해 mat 파일 정보를 불러오면 된다. import scipy mat_data = scipy.io.loadmat(경로)
[Android] Dialog 실습 - Item List Dialog Fragment 목차 1. 메소드 설명 2. 작동 화면 3. 코드 리뷰 1. 메소드 설명 Item List를 통해 Dialog에 리스트, 라디오 버튼, 그리고 체크 박스를 손쉽게 추가할 수 있다. Dialog Fragment에서 했던 것처럼 클래스의 자식 객체를 만들어 설정해준다. (생성과 관리를 별도의 영역에서 진행) 2. 작동 화면 3. 코드 리뷰 public static class ListDF extends DialogFragment { @NonNull @Override public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { CharSequence[] items = {"Red", "Green", "Blue"}; boolean[] checkedItem..
[Android] Dialog 실습 - show(), Dialog Fragment 목차 1. 메소드 설명 2. 작동 화면 3. 코드 리뷰 1. 메소드 설명 Dialog를 구현하기 위해서는 show(), DialogShow(), Dialog Fragment가 있지만, DialogShow()는 더 이상 안드로이드 스튜디오에서 서비스를 제공하지 않아 두 개의 방법으로 구현해봤다. AlerDialog 클래스를 사용해야 하는데 protected로 접근이 불가능해 AlertDialog의 Builder 필드 멤버를 이용해야 한다. 2. 작동 화면 3. 코드 리뷰 Button btDialog = findViewById(R.id.btDialog); // 버튼 객체 btDialog.setOnClickListener(new View.OnClickListener() { @Override public voi..
[Python] 백준 12015번 문제, 가장 긴 증가하는 부분 수열 2 https://www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net 주어진 수열에서 가장 긴 증가하는 부분 수열을 구하는 문제인데 입력 크기가 1 ≤ N ≤ 1,000,000이기 때문에 DP 방식으로 풀면 n^2의 시간 복잡도를 가져 시간 초과가 발생한다. 그래서 최장 증가 부분 수열(LIS) 알고리즘을 사용해야 하며, log n이라는 시간 복잡도를 가지는데 N만큼 동작해야 하므로 최종 시간 복잡도는 NlogN이다. A는 1부터 1,000,000까지의 범위이므로 ..
[Python] 백준 12738번 문제, 가장 긴 증가하는 부분 수열 3 https://www.acmicpc.net/problem/12738 12738번: 가장 긴 증가하는 부분 수열 3 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,000 ≤ Ai ≤ 1,000,000,000) www.acmicpc.net 가장 긴 증가하는 부분 수열 시리즈 중 세번째 문제이며, 주어진 수열에서 가장 긴 증가하는 부분을 구하는 것인데 입력의 크기가 1 ≤ N ≤ 1,000,000 이기 때문에 기존의 풀이법인 동적 프로그래밍(Dynamic Programming)을 사용한다면 n^2의 시간 복잡도를 가지기 때문에 시간 초가로 실패한다. 따라서 DP 알고리즘이 아닌 최장 증가 부분 수열(LI..
[Python] 백준 14002번 문제, 가장 긴 증가하는 부분 수열 4 https://www.acmicpc.net/problem/14002 14002번: 가장 긴 증가하는 부분 수열 4 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 수열이 주어졌을 때 가장 긴 증가하는 부분 수열을 구하는 문제이며, 시리즈 중 4번째 문제이다. 전과 달라진 점은 둘째 줄에 부분 수열을 출력해야 하며, 첫째 줄은 기존과 마찬가지로 부분 수열의 길이를 출력하면 된다. 동적 프로그래밍으로 풀이 가능하기 때문에 dp를 선언 한 다음에 A의 순서대로 2차원 배열 arr를..

728x90
반응형