다녀온곳2019. 6. 20. 16:30

6월 4일 상명대학교 캡스톤 경진대회 참가했습니다.

 

생각하지도 못했는데 최우수상을 받았습니다.

 

같이 해준 이영훈 이정민 팀원과 많은 조언해주신 김현철 교수님께 감사드립니다.

Posted by richcherry
캡스톤_졸업작품2019. 6. 20. 16:05

천안 상명대학교 소프트웨어학과 캡스톤2 졸업작품을 진행했습니다.

 

팀원으로는 이영훈 학우와 이정민 학우와 함께 했습니다.

 

이영훈 https://dudgns7675.tistory.com 이정민(https://jeongmin-lee.tistory.com

 

이영훈의 개발 일상 블로그 입니다.

 

dudgns7675.tistory.com

 

'Capstone/2018-2 Capstone' 카테고리의 글 목록

 

jeongmin-lee.tistory.com

 

드론으로 농작물을 촬영한 뒤 영상과 드론이 움직인 gps데이터를 서버로 전송, 영상을 분석하여 문제가 있는 식물의 위치를 사용자에게 알려주는 시스템을 만들었습니다.

 

 

1. 드론이 mobile sdk 만 지원하기 때문에 안드로이드 모바일 환경에서 드론을 조종하고 파일을 받을 수 있게 만들었고,

 

2. 모바일 기기가 드론이 촬영한 영상과 gps 데이터를 받으면 받은 데이터를 서버 컴퓨터로 전송해줍니다.

 

3. 서버 컴퓨터에서는 받은 영상데이터와 gps데이터를 가지고 분석을 진행한 뒤 영상에 문제가 생긴 식물을 발견하면  문제가 생긴 곳을 지도위에 마커로 나타내주고, 마커를 클릭하면 문제의 이미지를 사용자에게 보여줍니다.

 

저는 드론 제어를, 이정민 팀원은 모델학습을 이영훈 팀원은 gui 환경을 만들었습니다.

 

작품 소개 영상입니다.

https://youtu.be/xmiLOTW-y_8

 

Posted by richcherry
오류해결2019. 4. 9. 00:27

windows 환경에서 skvideo 라이브러리를 사용할 경우 ffmpeg 를 찾지 못해서 나는 오류입니다.

이럴 경우 환경변수를 설정해주시던가

 

코드를 사용하여 수동으로 잡아주시면 됩니다.

 

 

윈도우에 ffmpeg 를 설치하고 환경변수를 설정하는 법입니다.

https://www.wikihow.com/Install-FFmpeg-on-Windows

 

How to Install FFmpeg on Windows

This wikiHow teaches you how to install FFmpeg onto your Windows 10 computer. FFmpeg is a command line-only program that allows you to convert videos and audio into different formats, as well as record live audio and video. Open the FFmpeg...

www.wikihow.com

 

수동으로 할 경우 ffmpeg 를 구글에 검색해서 다운받으신 뒤

 

해당 압축파일을 풀고 나서

 

import skvideo
skvideo.setFFmpegPath("해당 위치")
import skvideo.io

 

해당 위치라 적혀 있는 부분에다 경로를 넣어주시고 해당 3줄 코드를 추가하면 됩니다.

https://github.com/scikit-video/scikit-video/issues/98 왼쪽 링크를 참고했습니다.

 

AssertionError: Cannot find installation of real FFmpeg (which comes with ffprobe). · Issue #98 · scikit-video/scikit-video

Hi, I have a mac and I was trying to use skvideo.io.vwrite from my spyder console. It throws the assertion error: Cannot find installation of real FFmpeg (which comes with ffprobe). When I type whi...

github.com

 

'오류해결' 카테고리의 다른 글

오류해결 Host key verification failed  (0) 2021.04.13
python can not allocate memory 문제  (0) 2021.03.18
오류 해결 _auth_source_manager_obj  (0) 2020.12.21
Posted by richcherry
공부2019. 3. 22. 17:04

github 주소입니다. https://github.com/choinamki/google_translate_useing_selenium


수집한 데이터가 영어가 아니라서 lda를 사용 할 수 없었습니다.

lda를 사용하기 위해서 구글 번역기(google translate) 홈페이지에 접속해서 문장을 번역하는 코드를 만들었습니다.

각 나라 언어들을 구글 번역기를 이용하여 영어로 번역시켜 줍니다.


Posted by richcherry
사용법2019. 2. 23. 23:53

아래 방식은 테스트한지 2년이 지나서 잘 작동되는지 알 수 없습니다.

또한 ifttt가 유료화되서 3개의 무료이벤트만 사용할 수 있다고 합니다. 다른 분들의 최신 블로그를 통해서 만드시는걸 추천드립니다.

 

해당 동영상에서 도움을 얻었습니다. https://www.youtube.com/watch?v=PtiX4TcdDSg

 

wol 은 해당 블로그에서 도움을 얻었습니다. http://blog.naver.com/PostView.nhn?blogId=a77ila2000&logNo=221040624446&categoryNo=0&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=postView

 

 

침대 위에서 컴퓨터 까지의 거리가 너무 멀었습니다.

 

 

특히 술을 마시고 컴퓨터를 할 때, 침대에 누워서 놀다가, 잘려고 하니까 컴퓨터를 끄러 가야되더군요.

 

너무나도 귀찮았기 때문에, 이 문제를 어떻게 해결할까 생각했습니다.

 

저번 학기에 캡스톤 주제로 구글 어시스턴트를 통한 시스템 제어를 생각한걸 떠올렸고. 구글 홈을 주문했습니다.

 

 

 

 

하려고 하는 일은 이렇습니다.

 

1. 구글 홈을 호출 한뒤 구글 어시스턴스를 이용하여 음성인식을 합니다.

 

구글 홈 루틴을 이용하여 제 명령어를 영문 텍스트로 변환한 뒤 명령을 실행합니다.

 

 

 

 

 

 

저는 컴퓨터 꺼 줘, 컴퓨터 꺼줘, 컴퓨터 끄기 라고 구글 어시스턴트가 음성 인식을 할 경우  pc off 를 실행시키라고 지정했습니다.

 

지금 이 게시글에서 사용하는 예제는 컴퓨터를 키는 pc on 으로 하셔야 합니다.

 

2. https://ifttt.com/ 에 접속합니다.

 

우리의 앱과 구글 어시스턴트를 연결시켜 주기 위해서 필요합니다.

 

 

 

구글 아이디로 가입을 하신 뒤 My applets 를 들어갑니다.

 

 

New Applet 을 클릭합니다.

 

this 부분을 클릭합니다.

 

구글 어시스턴트를 검색합니다.

 

say a simple phrase 를 선택합니다.

 

 

해당 화면이 보여야 합니다. what do you wnat to say 루틴에 적은 내가 한글로 말하면 작동할 영어 명령어를 적습니다. 저는 pc off 를 사용했습니다. 영어만 가능합니다. wht do you want the assistant to say 에는 여러분의 명령을 알아들은 구글 어시스턴트에 대답을 적습니다.그리고 create trigger 를 누릅니다.

 

3. join 어플리케이션을 핸드폰에 설치합니다.  크롬 확장 프로그램 또한 설치합니다.

 

https://play.google.com/store/apps/details?id=com.joaomgcd.join&hl=ko

 

https://chrome.google.com/webstore/detail/join/flejfacjooompmliegamfbpjjdlhokhj

 

pc와 핸드폰 등, 안드로이드 기기를 연동하기 위해서 필요합니다. 가능하면, 앱을 구매하시는게 좋습니다.

 

 

 

 

setting notification 에 들어가서  pc로 알람을 보내기 위해서 notification 권한을 허용합니다.

 

 

 

 

4. 이제 join 웹 플랫폼에 들어갑니다.

 

https://joinjoaomgcd.appspot.com/

 

핸드폰을 아이콘을 누른 뒤 api 를 클릭합니다.

 

 

 

api key show 를 클릭합니다. - 보안 문제로 api 키는 절대로 타인에게 노출되면 안됩니다.

이제 Text - takser command or notification text 부분에 여러분이 쓰고 싶은 명령어 ( 예를 들어 저는 pc_on) 를 적습니다. 그리고 텍스트를 입력하면 맨 위쪽 칸에 텍스트가 생성됩니다. 이 텍스트를 복사합니다.

 

 

5. 2에 이어서 

 

thant 을 누르고

 

 

webhooks 를 누른 뒤

 

make a web request 에서 url 부분에 아까 저희가 복사한 텍스트를 붙여넣습니다.

 

method 는 post 로 변경합니다.

 

그런 뒤에 create action 을 만듭니다.

 

이렇게하면 여러분은 구글 어시스턴트에게 한국어 명령어를 내리면 루틴을 통해 영어 명령어로 바뀐 뒤 join 어플리케이션을 통해 핸드폰 join 어플에 해당 명령어가 post 되게 됩니다.

 

6.tasker 앱을 설치합니다. 유료 앱입니다.

 

https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&hl=ko

 

안드로이드 핸드폰을 자동화 시켜주기 위한 앱입니다.

 

 

처음에 화면에 아무것도 없으실겁니다. + 를 누른 뒤 

 

 

플러그인 join 을 클릭하고 

 

 

text에 들어가서 text 필터를 아까 우리가 받을 명령어(저는 pc_on 로 설정하고)를 설정하고 이 명령어를 받았을 때 variable 변수를 PO Power 로 설정하고 저장합니다.

 

그리고 이 조건이 맞으면 실행될 task 에는 추가 + 버튼 클릭 -> net 클릭 ->  HTTP Get 을 누른 뒤  

 

Server:Port 와 Path 값을 적절히 넣어주면 됩니다.

 

이 블로그를 참고하시면 됩니다.

 

http://blog.naver.com/PostView.nhn?blogId=a77ila2000&logNo=221040624446&categoryNo=0&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=postView

 

 

이렇게 하면 여러분들은 구글홈에게 명령을 내리면 컴퓨터를 켜주는 시스템을 만들 수 있습니다.

 

다음 글에는 event ghost 를 사용하여 컴퓨터 끄기, 컴퓨터 소리제어, 모니터제어 등을 해보겠습니다.

 

완성된 동영상입니다.

https://www.youtube.com/watch?v=1MNZnEOowMI&feature=youtu.be

 

Posted by richcherry
사용법2019. 2. 14. 23:42

해당 블로그를 참조했습니다. https://lovit.github.io/nlp/2018/04/17/word_cloud/


이정민 학생과 같이 제작중입니다. https://jeongmin-lee.tistory.com/53

해당 코드 깃허브 주소입니다. https://github.com/choinamki/everytime_crawler/



인터넷을 돌아다니다가 월드오브탱크 갤러리 게시글을 수집하여 만든 워드클라우드를 보고 흥미가 동했습니다.

그래서 호기심에 제가 자주 보는 에브리타임 게시글로 워드클라우드를 만들어 보기로 했고, 제작한 코드를 이정민 학생과 같이 수정중에 있습니다.



작동 원리는 에브리타임 홈페이지에 접속하여 로그인을 한 뒤 자유게시판 버튼의 XPATH 값을 찾아서 클릭합니다.


페이지 하나당 20개의 자유게시판 글들이 보여집니다.  FIND_NUM 만큼 돌아서 총 FIND_NUM * 20만큼의 게시글 접속링크를 얻을 수 있습니다.



everytime_link.txt 로 해당하는 접속링크를 저장합니다.




이것을 가지고서 각 게시글의 접속, 해당하는 게시글의 텍스트를 가져와서 json 형식으로 저장합니다.



해당하는 텍스트 들을 하나의 str 로 만들어 kr-wordrank를 이용하여 단어와 빈도수로 만든 뒤 이것을 통해 wordcloud를 만듭니다.




워드클라우드를 기본폰트로 만들면 한글이 깨지기 때문에 한글을 표시할 수 있는 폰트가 필요합니다.

저는 나눔고딕을 사용했습니다.





plt 를 사용하여 워드클라우드 그림을 그리고 저장할 수 있습니다.

Posted by richcherry
다녀온곳2019. 2. 14. 22:53

상명대학교 천안캠퍼스 2018년 2학기 프라임 종합설계 경진대회 참여 사진입니다.

이영훈 학생과 같이 참여하여 배틀그라운드 순위 예측 모델을 만들었습니다.

배틀그라운드 데이터셋으로 모델을 만들고 배틀그라운드 api 을 이용하여 아이디를 입력하면 해당 예측 순위를 뽑아주는 프로그램 입니다.

저는 주로 모델을, 친구는 api와 QT를 사용하여 gui 를 만드는 데 주로 시간을 쏟았습니다.



Posted by richcherry
사용법2019. 2. 13. 15:45

크롤러를 만들다가 request get 을 해도 특정 부분이 없는 현상이 있었습니다.

찾아보니까 동적인 웹페이지는 코드를 통해서 문서가 만들어져 일부분만 가져와진다고 합니다.

그래서 Selelnium 을 이용하여 chormdriver 로 웹페이지를 수집하는 크롤러를 만들었습니다.


 

1. 먼저 크롬 드라이버를 준비합니다.

링크 : http://chromedriver.chromium.org/downloads

자신의 운영체제 환경에 맞는 파일을 준비하시면 됩니다.


2. 셀레니움을 인스톨합니다.

!pip install selenium 

을 통해 selenium 라이브러리를 깔아줍니다.


3. 코드를 작성합니다.


저는 대학교 커뮤니티 사이트인 에브리타임의 게시판 글과 데이터를 수집하기 위해서 셀레니움을 사용했습니다.




webdriver.Chrome 에 자신의 크롬드라이버가 있는 경로를 적어주시고

implicitly_wait 에 자신의 웹 브라우저가 암묵적으로 웹자원이 로드되는 시간이 얼마까지 기다리는지를 설정합니다.

driver.get 을 통해서 해당 웹페이지를 접속합니다.


아래 사진은 크롬드라이버가 작동한 예입니다.



윗 그림처럼 Chrome이 자동화된 테스트 소프트웨어에 의해 제어되고 있습니다. 라는 문구와 함께 작동하게 됩니다.


해당하는 코드를 보시고 everyrtime 의 아이디값과 패스워드 값을 입력하시면 웹브라우저가 자동으로 로그인을 하여 자유게시판을 클릭하는 모습을 볼 수 있습니다.





저는 everytime 게시판의 텍스트를 수집해서 워드클라우드를 만들어봤습니다.

자세한 내용은 코드가 다듬어지는 대로 전체 코드와 함께 설명하겠습니다.

Posted by richcherry