안드로이드 스튜디오를 처음 설치할 때 배경에 대한 테마를 선택하도록 되어 있습니다하얀 바탕과 검은 바탕 중 어떤걸 선택 할지 조금 고민을 하게 되는데 대부분 기본으로 설정되어 있는 검은 색의 Darcula를 선택하고 넘어 갑니다.

그런데 코딩을 하다 보면 환경에 따라 또는 기호에 따라 하얀색 바탕이 편할 때도 있습니다개인적으로는 낮에는 검은 배경, 밤에는 하얀색 배경이 글씨를 보는데 눈의 피로를 덜 하게 되는 것 같습니다. 현재는 Darcula로 설정이 되어 있습니다.


android theme


테마 설정 변경은 간단합니다메뉴에서


 File > Settings...


를 선택 하면 


android theme


Settings 팝업 창이 나타나고


android theme


좌측 메뉴에서


Appearance & Behavior > Appearance


를 찾아서 클릭 합니다. 이제 우측 첫 번째 항목에

Theme:를 확장해 주면 Darcula, High contrast, IntelliJ 중 하나를 선택 할 수 있습니다.

 

먼저 High contrast를 선택하고 하단에 있는 OK 버튼을 클릭해 봅니다.


android theme


밋밋하던 개발 환경이 조금 강렬해 졌습니다. 대신 눈은 피곤해질것 같네요.


다시 Settings 창을 열고


android theme


이번에는 IntelliJ 를 선택 하고 OK 버튼을 클릭 합니다.


android theme


흰색 바탕의 편집 모드로 변경이 되었습니다

각자 눈의 피로가 덜 할 수 있는 테마를 골라서 사용해 보세요.


- copy coding -


독수리를 타고 하늘을 날으는 꿈 해몽

 -> 모든 일이 순조롭게 진행될 것이며 부귀를 얻을 암시이다.


독수리가 높은 하늘에 머물고 있는 꿈 해몽

 -> 명성과 부를 동시에 손에 넣을 수 있다.


대형 독수리가 하늘을 나는 꿈 해몽

 -> 사랑의 라이벌이 있다는 암시이다.


독수리가 하늘 높이 나는 꿈 해몽

 -> 지위가 높아 지거나 진행하고 있는 일이 모두 잘 되어 번성할 징후이다.


자기가 독수리가 되어 새를 잡는 꿈 해몽

 -> 권세를 얻어 모든 자유를 누리며 사람들의 지도자가 될 것이다.


자신이 독수리로 변해 짐승을 잡는 꿈 해몽

 -> 공공단체에서 자신이 주도권을 잡으려고 한다.


독수리로 변한 자신이 여러 마리의 닭을 물어 죽인 꿈 해몽

 -> 자기와 관계 깊은 사람이 출가한다.


dream eagle



대형 독수리가 뭔가를 먹고 있는 꿈 해몽

 -> 행운의 여신이 당신에게 미소를 지을 것이다.


대형 독수리를 죽이는 꿈 해몽

 -> 자신의 생활은 원하는 대로 진행될 것이다.


독수리가 해치려고 달려드는 꿈 해몽

 -> 나쁜 사람으로부터 고통을 당하거나 병에 걸려서 고생할 조짐이다.


독수리가 발톱을 세우고 자신을 공격하는 꿈 해몽

 -> 경쟁자에게 지거나 또는 지배를 받게 되며 일에서 실패를 경험하게 된다.


독수리가 자신을 채어 하늘로 날아 오르는 꿈 해몽

 -> 조력자의 도움을 받게 되어 사업이나 작품활동 등에 발전이 있을 징조이다.


독수리, 매 등 사나운 새를 보는 꿈 해몽

 -> 지위와 명예가 높아지고 재물이 늘어나는 등 입신출세와 관련된 좋은 일이 있다.


독수리 따위의 새가 날아와서 몸을 무는 꿈 해몽

 -> 승진하거나, 좋은 배우자를 만나 결혼하는 등 경사가 있을 것이다.


머리 위에서 독수리가 날고 있어서 긴장하는 꿈 해몽

 -> 사랑의 경쟁자가 있음을 알려주고 있다.


매가 새를 잡아 오는 꿈 해몽

 -> 아랫사람을 통해 귀인을 모셔오거나 재물을 얻게 된다.


매가 하늘을 빙빙 돌며 나는 꿈 해몽

 -> 소망하던 일이 잘 진행되어 크게 성공할 길몽이다.


매를 보는 꿈 해몽

 -> 대중의 존경을 받으며 일에서 성공을 거두어 주위가 부러워 한다.


매가 작은 새를 잡는 것을 보는 꿈 해몽

 -> 기발한 착상이 떠올라 일을 소망대로 성사시키게 된다.


매가 자기 집 닭을 채가는 꿈 해몽

 -> 본인의 세력이나 재물의 일부가 힘있는 자에게 강탈당하게 될 것이다.


자기가 훈련시킨 매를 놓아 새를 잡는 꿈 해몽

 -> 아랫사람을 통해 재물이 생기거나 좋은 일거리, 여자를 얻게 될 것이다.


매가 날고 있지 않는 꿈 해몽

 -> 당분간 지루한 생활이 계속된다.


- copy coding -


확장자가 shp인 파일은 GIS에서 사용하는 Shapefile로 지리 공간에 대한 벡터 데이터를 담고 있는 파일 입니다바탕이 되는 지도 이미지에 레이어로 추가해서 정보를 보여주기 위해 사용을 하는데 QGIS를 설치하고 파일을 열어보는 부분까지 설명을 합니다.

 

https://www.qgis.org/en/site/forusers/download.html

 

다운로드 하기 위해서는 위에 있는 주소에 들어가보면


QGIS shp shapefile


운영체제 별로 프로그램이 준비되어 있습니다설치하려는 OS를 선택합니다저는 Windows를 선택했습니다.


QGIS shp shapefile


운영체제가 몇 bit로 작동하는지 그리고 어떤 버전을 사용할 것인가를 결정하고 파일을 선택합니다저는 최신 버전인 3.16(64bit)를 선택 했습니다.

설치는 다운로드 받은 파일을 실행해서 진행하고 특별한 변경사항이 없다면 그냥 끝까지 Next 버튼을 클릭하면 완료 됩니다화면 캡쳐 이미지만 나열해 보았습니다.


QGIS shp shapefile



QGIS shp shapefile



QGIS shp shapefile



QGIS shp shapefile



QGIS shp shapefile



QGIS shp shapefile


설치가 완료 되었습니다.

QGIS를 실행해 봅니다.


QGIS shp shapefile


처음이자 마지막으로 볼 수 있는 화면으로 [시작합시다!]를 클릭 합니다.


QGIS shp shapefile


QGIS가 실행된 모습입니다프로젝트 하나를 열어보겠습니다. QGIS는 프로젝트 단위로 관리를 합니다.


QGIS shp shapefile


보유하고 있는 프로젝트가 있으면 메뉴에서 프로젝트>열기를 선택해서 프로젝트를 가져옵니다.


QGIS shp shapefile


만일 프로젝트가 아닌 shp 파일만 가지고 있다면


QGIS shp shapefile


메뉴에서 프로젝트>새로 생성을 선택 합니다.


QGIS shp shapefile


그리고 메뉴에서 레이어>레이어 추가>벡터 레이어 추가를 선택 합니다.


QGIS shp shapefile


레이어를 추가하는 팝업을 볼 수 있는데 여기에서 원본 항목에 [...] 버튼을 이용하여 shp 파일을 선택해 주고 추가 버튼을 클릭 합니다.


QGIS shp shapefile


선택한 shp 파일을 볼 수 있습니다. 컴퓨터가 너무 오래돼서 사이즈가 큰 벡터이미지를 불러오면 버퍼링이 발생하는 군요벡터이미지로 할게 있는데 느긋한 마음으로 작업을 해야겠습니다.


- copy coding -


Contours는 이미지에서 동일한 강도의 색을 가진 경계선을 연결한 line을 찾아내는 기능입니다동일한 강도의 이미지를 찾기 위한 방법으로 먼저 배경을 binary로 검게 만들고 물체의 경계를 하얀색으로 하여 경계 line들을 찾아냅니다.  

 

cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]]) → image, contours, hierarchy


 

Parameter

설명

image

이미지 파일

mode

cv2.RETR_EXTERNAL : 가장 바깥쪽 컨투어만 검색

cv2.RETR_LIST : hierarchy 관계 없이 모든 컨투어 검색

cv2.RETR_CCOMP : 모든 컨투어를 검색하여 2-level hierarchy 구성

cv2.RETR_TREE : 모든 컨투어를 검색하여 full hierarchy 구성

method

cv2.CHAIN_APPROX_NONE : 모든 컨투어 좌표를 저장

cv2.CHAIN_APPROX_SIMPLE : 수평, 수직의 끝점만 남기고 생략

cv2.CHAIN_APPROX_TC89_L1, cv2.CHAIN_APPROX_TC89_KCOS :

 Teh-Chin 체인 근사 알고리즘 적용

contours

발견된 contour

hierarchy

이미지의 hierarchy

offset

shift

 

이미지에서 어떤 line을 찾을 것인가는 mode를 통해서 설정하고 필요한 line을 선별하여 찾아내고 찾은 line 정보는 method를 이용해 어떤 값을 저장할 것인가 설정하게 됩니다.   findContours() 함수가 실행되면 3개의 리턴 값을 넘겨 주게 됩니다.


findContours()는 버전에 따라 리턴 값이 변경이 되었습니다. 3.x는 3개를 리턴하고 4.x는  contours, hierarchy 2개를 리턴 합니다.  오랜만에 예전에 만들어놓은 소스를 돌렸더니 오류가 나서 놀랬네요.

 

저장된 선들을 그리는 작업은 drawContours() 함수를 이용 합니다.

 

cv2.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]]]) → image


Parameter

설명

image

이미지 파일

contours

이미지에서 구한 모든 contours 정보

contourIdx

contours index로 몇 번째 contours line을 그리는지 설정 한다. 음수이면 모든 contours를 그린다.

color

contours를 그리는 선의 색상 설정

thickness

contours의 선을 그리는 굵기 설정

lineType

선의 형태 설정

cv.FILLED

cv.LINE_4

cv.LINE_8

cv.LINE_AA

hierarchy

contours의 일부만 그리는 경우 사용(maxLevel과 함께 사용)

maxLevel

hierarchy가 있는 경우 0, 1, 2의 조건으로 그린다.

offset

shift

 

findContours()에서 리턴되어 저장된 line들은 drawContours() 함수를 이용하여 어떤 line을 어떤 조건으로 설정하여 그릴 것인가 결정 해주기만 하면 저장된 line을 시각적으로 볼 수 있습니다.

 


import numpy as np

import cv2

from matplotlib import pyplot as plt

 

imgFile1 = 'D:/tensorflow/images/contour001.jpg'

 

# image read

img1 = cv2.imread(imgFile1)

img1_gray = cv2.cvtColor(img1, cv2.COLOR_RGB2GRAY)

rtn, img1_thr = cv2.threshold(img1_gray, 127, 255, cv2.THRESH_BINARY)

img_binary = cv2.bitwise_not(img1_thr)

img2 = img1.copy()

 

contours, hierarcy = cv2.findContours(img_binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

img_ext = cv2.drawContours(img1, contours, -1, (0, 255, 0), 5)

 

contours, hierarcy = cv2.findContours(img_binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)

img_list = cv2.drawContours(img2, contours, -1, (0, 255, 0), 5)

 

plt.imshow(img1_gray, 'gray')

plt.title('img1_gray')

plt.show()

plt.imshow(img_binary, 'gray')

plt.title('img_binary')

plt.show()

 

plt.imshow(img1, 'gray')

plt.title('img_ext')

plt.show()

 

plt.imshow(img2, 'gray')

plt.title('img_list')

plt.show() 


프로그램을 간략하게 설명하면

원본 이미지를 gray로 변환합니다.


opencv contours


gray로 변환된 이미지를 다시 binary로 변환해서 배경을 검은색으로 바꾸어 줍니다.


opencv contours



cv2.RETR_EXTERNAL mode를 이용해서 바깥쪽 외각선만 추출해서 그려준 경우 입니다.

opencv contours



 cv2.RETR_TREE mode를 이용해서 전체 외각선을 찾아서 그려준 경우 입니다.

opencv contours


이런식으로  mode를 변경해가며 테스트를 진행하여 필요한 기능을 찾아내서 사용하면 됩니다.


- copy coding -


1234567···62

+ Recent posts