파이썬 PyQt5 설치하기

이미지
파이썬언어로 GUI (Graphic User Interface) 환경의 프로그램을 만들기 위해서는 여러가지 방법이 존재합니다. 먼저 GUI는 그래픽 환경 기반에서 돌아가는 아래와 같은 프로그램들을 의미합니다. Python + PyQt5로 만든 GUI 예제 GUI 프로그래밍을 위해 제공되는 파이썬 패키지는 대표적으로 파이썬에 내장된 Tkinter 부터 wxPython, PyQt 등 다양하게 존재합니다. Tkinter는 파이썬 공식 GUI 패키지로 추가 설치없이 사용 가능하지만, 깔끔한 디자인이나 복잡한 화면 등을 구성하기에는 그 기능이 부족합니다. 따라서, 학원에서는 이 중 가장 막강한 기능을 자랑하는 Qt를 기반으로 한 PyQt5를 이용해 파이썬 GUI 교육을 진행하고 있습니다. Qt는 C++로 작성된 크로스 플랫폼 프레임워크이며, 이를 파이썬에서 사용하도록 제작된 패키지가 PyQt입니다. 현재는 PyQt5 버전이 주로 사용되고 있습니다. 이제부터는 Visual Studio 2017의 파이썬 환경에 PyQt5 패키지를 설치하는 방법에 대해 설명드리겠습니다. 만약, Visual Studio에 Python 설치 시 아나콘다를 설치한 경우 는, PyQt5를 따로 설치하지 않아도 됩니다. 아나콘다는 파이썬과 파이썬에 사용가능한 패키지들을 한번에 설치하고 관리(수정, 삭제, 업데이트)가 가능하도록 해주는 일종의 종합 선물 세트 입니다. 파이썬 초보자는 파이썬 설치시 발생할 수 있는 경로 문제나 pip 명령어 사용이 익숙하지 않기 때문에 아나콘다를 설치 하는 것을 추천합니다. ...

MS Azure를 이용한 얼굴인식 예시

이미지
아이폰 광고에서 보았던 face 인식 기술 을 MS 파이썬 예제를 참조해 만들어 보았습니다. 먼저 Azure나 Machine learning 에 대해 궁금한 전반적인 사항은 이전에 올린 "음성인식" 관련 글을 참조해 주시기 바랍니다. 얼굴 인식의 기본적인 원리는 아래와 같습니다. 1. MS Azure Cognitive(인지) 기술 준비 (서비스 가입후 key 필요) 2. 분석할 이미지를 웹에 업로드 (클라우드 기반이라 로컬 이미지는 동작하지 않네요) 3. 분석할 이미지의 웹주소를 코드에 추가하고 인지 API 함수 호출 4. 클라우드 기반으로 웹 이미지 분석을 마치면, 이미지 속성 (사진에서의 얼굴영역, 나이, 머리색, 성별, 표정 등) 이 호출 함수 리턴값으로 들어옴 즉 웹상의 이미지를 MS 머신러닝 서버에 넣으면, 분석이 나오는데 이를 결과로 받아오는 방식 입니다. 얼굴 인식 알고리즘을 모르더라도, 쉽게 MS 인지 서비스를 이용해 해당 결과를 코드로 구현이 가능합니다. 참 좋은 세상입니다. 사실 얼굴인식 알고리즘은 개인 또는 기업이라도 쉽게 구현할 수준의 것이 아닙니다. 먼저 해당 코드를 실행한 결과부터 살펴보겠습니다. 첫번째로 MS 예제 코드에 링크된 여성의 사진입니다. 가운데 붉은 선으로 표시된 부분이 얼굴을 인식한 부분입니다. 코드를 작성한 후 해당 이미지의 속성을 같이 출력해 보니 다음과 같습니다. face rectangle 정보는 이미지상에 붉은 사각형으로 표시된 얼굴 영역의 좌표를 의미합니다. face attribute는 여성, 24세, 행복한 표정이라고 분석 결과가 나왔습니다. 우리 가족은 어떻게 나올까 싶어, 이미지를 변경해 실행해 보았습니다. ㅎㅎ 일단 4명의 인물에 대한 얼굴 영역을 정확히 인식합니다. 세부 결과는 아래와 같습니다. ...

MS Azure를 이용한 음성-문자 변환 예제

이미지
흔히, 클라우드라고 하면 온라인에 사진이나, 문서 등 파일을 저장하는 공간으로 인식하는 경우가 많습니다. 물론 이런 단순 파일저장도 클라우드 컴퓨팅 서비스의 일부이긴 하지만, MS, 아마존, IBM, 구글 등의 기업들은 좀 더 다양한 기술을 클라우드에서 제공해 주고 있습니다. 예를 들면, MS는 Azure(애져)라는 이름의 클라우드 컴퓨팅 플랫폼에 음성인식, 얼굴인식, 가상머신, 머신러닝 등의 플랫폼을 제공해주고 있습니다. 요즘 많이 사용되는 클라우드 컴퓨팅 플랫폼 서비스는 Google Cloud Platform , MS Azure , Amazon Web Service Cloud   등 3개의 서비스가 대표적입니다. 아래는 MS Azure 에서 사용가능한 서비스들 입니다. 무료, 유료 서비스가 존재합니다. 이 중 MS의 Azure 의 Cognitive(인지) Service 를 이용해 음성을 문자로 바꾸어주는 코드를 MS 예제를 참조해 C++ 로 직접 만들어 보았습니다. 먼저 결과를 보면, 신기하게도 노트북의 마이크에 제가 직접 음성으로 말한 "Hello, This is ocean coding school"을 문자로 변환해 줍니다. 물론 이런 소프트웨어는 많지만, 사용이 아닌 개발 관점의 포스팅 입니다. 영어 발음이 썩 훌륭하진 않지만, 잘 인식하니 기특합니다. ㅎㅎ 재미있네요. 이미 Artificial Intelligence 와 로봇으로 대표되는 4차 산업 혁명이 착착 진행되고 있음을 체감하였습니다. 아래 코드는 프로그램 실행 화면의 결과이며, 처음 실행시 Say something 이라는 문구를 출력합니다. 이때 마이크에 영어로 이야기 하면 그 내용이 잠시 후 화면에 글씨로 옮겨집니다. 사용자가 말한 음성을 서버로 전송한 후, 이를 문자로 변환해 돌려주는 방식입니다. 근데 여기까지 오는 과정이 만만치 않았습니다...

나의 파이썬 첫앱, 자동판매기 예제

이미지
파이썬을 이용해 간단한 자동판매기를 콘솔로 구현해 보았습니다. 파이썬 자료형 중 튜플의 개념과, if, for, while 제어문, 함수의 개념만 이해하고 있다면 별로 어렵지 않을 것 같습니다. 클래스보다는 절차지향위주로 코드를 만들어 보았으며, 동작원리는 다음과 같습니다. 1. 판매 메뉴, 가격 변수 설정 (튜플) 2. 메뉴와 가격을 출력한 후, 돈 투입 3. 무한 반복문을 통해 메뉴를 보여주고, 구입 시 잔액 표시 4. 0 번 메뉴 선택 시 반복문 탈출하여, 프로그램 종료 그럼 전체적인 코드를 한 번 살펴보겠습니다. def showmenu(): print() print("[자판기 판매 메뉴]") for i in range(0, len(menu)): print(i+1, ".", menu[i], "\t가격 : ", price[i]) print() def buy(num): if money < price[num]: print("잔액이 부족합니다. 잔액 : %d" %money) return money else: print(menu[num], " 구입완료") balance = money - price[num] print("잔액 : ", balance) return balance if __name__ == '__main__': menu = ("콜라", "사이다", "생수", "커피") price = (500, 400, 300, 700) money = 0 money = in...

Visual Studio에 파이썬 개발환경 추가하기

이미지
MS의 통합개발환경 도구인 Visual Studio(이하 VS)에 Python 개발환경을 추가 구성 하는 방법은 아래와 같습니다. (기존에 VS설치 시 PTVS를 설치하지 않은 경우) 만약 VS를 처음 설치하는 경우라면 설치 시 옵션에서 PTVS를 체크해 설치 하면 됩니다. (이 경우 바로 아래의 3. 파이썬 설치 로 이동 바랍니다) PTVS( P ython T ool for V isual S tudio)는 VS에서 Python을 사용하기 위한 도구입니다. 1. PTVS 설치 (VS 2015 인 경우) 1.1 제어판-프로그램추가/제거->VS 2015 선택 후 수정 1.2 Visual Studio 용 Python 도구 체크 2. PTVS 설치 (VS 2017인 경우) 2.1 VS 2017실행 후 메뉴의 "파일"->"새로만들기"->"프로젝트" 선택 2.2 왼쪽 하단의 Visual Studio 설치관리자 열기 선택 2.3 설치 관리자에서 "데이터과학 및 분석 응용프로그램" 중 Python 언어지원 체크 3. 파이썬 설치  3.1 Python 공식 홈페이지에서 Python을 다운받아 설치 하는 경우 파이썬 공식 홈 파이썬 홈페이지 메뉴의 "Downloads" -> "Windows" 를 선택해 32bit, 64bit 둘 다 또는 선택적으로 설치가 가능합니다.  이 경우는 Python 설치 후 VS 실행 후 메뉴의  ...

MFC기반 화면 캡쳐앱 만들기

이미지
이번에 만든 주제는 '화면 캡쳐' (Screen Capture)프로그램 입니다. 물론 더 우수한 화면 캡쳐 프로그램도 이미 많이 있지만, 우리의 목적은 늘 그렇듯이 프로그래밍 공부이죠. 공부를 위한 예제로서, 복잡한 개념은 제외하고 캡쳐와 이미지 저장에 포커스 를 맞춰 만들어 보았습니다. MFC 대화상자 기반의 화면 캡쳐 프로그램의 기능 은 아래와 같습니다. 1. 현재 스크린(화면전체) 캡쳐 2. 특정 윈도우만 캡쳐 3. 캡쳐된 이미지를 JPG, BMP 로 저장 그럼 그 설계 과정 을 한번 살펴볼까요. 1. 대화상자 프로젝트를 만들어 컨트롤을 배치 합니다. - 전체화면, 특정윈도우 선택 라디오 버튼 - 저장 옵션 JPG, BMP 라디오 버튼 - 전체화면 캡쳐 시 현재 캡쳐 스크린을 보여줄 픽쳐 컨트롤 - 특정 윈도우 선택 캡쳐 시 모든 윈도우를 표시할 리스트 박스 2. 캡쳐 대상 윈도우 DC 얻기 전체 화면(스크린 윈도우)을 캡쳐 하기 위해 윈도우 DC 얻기는 쉽습니다. GetDC()함수의 전달인자를 NULL로 넣어주면 전체 윈도우 DC를 얻을 수 있습니다.  HDC hdc = ::GetDC(NULL); 나중에 이 hdc를 이용해 이미지를 복사해 저장만 하면 끝이죠. 특정 윈도우만 캡쳐 하기는 이 보다 조금 복잡합니다. 먼저 현재 내 컴퓨터의 모든 윈도우 를 가져와야 합니다. 왜냐하면 어떤 특정 윈도우를 캡쳐할지 알 수 없기 때문에 모든 윈도우를 다 표시하고 사용자가 선택하게 만들기 위함입니다. 바로 아래 API 함수를 호출하면 모든 윈도우의 핸들(HWND)을 가져올 수 있습니다. BOOL EnumWindows(   WNDENUMPROC lpEnumFunc,   LPARAM      lParam ); 첫 전달인자는 콜백함수의 포인터 입니다. 두번째 전달인자는 콜백함수에 전달할 값입니다. 따라서 EnumWidn...

파이썬 프로그래밍과정 개설안내

이미지
많은 프로그래밍 언어가 있지만, 요즘 가장 뜨거운 관심을 받는 것은 단연 파이썬 언어입니다. 파이썬은 1991년에 출시되었으며, 창시자인 네덜란드의 "귀도 반 로섬"은 1989년 크리스마스 주간에 연구실 문이 닫혀있어 심심해서 만들었다고 합니다. 아직 우리나라에서 일부 스타트업 기업이나, 머신러닝 분야 종사자들이 주로 사용중이지만,  그 사용자 층이 급격히 증가하고 있으며, 이미 외국에서는 기업, 교육기관에서 주류 언어로 자리잡아 가고 있습니다. 모든 프로그래밍 언어에는, 그 언어만의 철학과 강점, 단점이 존재합니다. 만약 어떤 프로그래밍 언어가 모든 면에서 우수하다면, 다른 언어가 존재할 이유가 없겠지요. 제가 느끼는 파이썬의 가장 큰 강점은 문법이 간결 하여 다른 프로그래밍 언어에 비해 배우기 쉽다 는 점이 아닐까 합니다. 또한, 개발 속도가 타 언어에 비해 빠르고, C, C++과의 연동도 아주 우수합니다. 또한, 제 개인적 관심분야인 머신러닝 계열 (특히, MS CNTK)의 샘플 코드들이 파이썬으로 만들어진 것들이 많아 저도 재미있게 공부해 가고 있습니다. 물론 C, C++에 비해 실행속도가 느리다는 단점은 존재하나, 이는 파이썬을 깊게 공부하면 충분해 해결 가능한 문제입니다. (C++과 접착을 통해, 다만 간단하진 않습니다) 간략히, 파이썬 언어의 장, 단점을 설명드렸고, 학원 파이썬 강좌는  5개월 과정으로 파이썬 교육(이론, 코드 실습)이 진행 됩니다. 아무것도 모른다고 가정하고 교육을 진행하므로, 수업에 대한 부담은 필요없으나, 영어 타자는 사전 연습이 필요 합니다. [파이썬 기초과정 커리큘럼] 1. 하드웨어 소프트웨어 개념 2. 파이썬 기본 자료형 (숫자, 문자, 리스트, 튜플) 3. 이산 수학 기본 (2진수, 논리, 비트 연산 등) 4. 함수(기본개념, 내장, 외장함수) 5. 파이썬 고급 자료형 (딕셔너리, 집합) 6. 제어 명령문(반복, 조건문) ...

어떤 프로그래밍 언어를 배워야 할까

이미지
제가 많이 듣는 질문중에 하나입니다. 1. 코딩을 처음 접하는 분은 코딩이 무엇인지 물어봅니다. 코딩은 소프트웨어(같은 표현으로 Program, Application)를 만드는 것을 말합니다. 윈도우, 안드로이드, 카카오톡, 게임, 파워포인트 모두 소프트웨어 입니다. 좀 더 정확히 이야기 하자면 윈도우, 안드로이드는 해당 전자기기 내부를 통합(하드웨어, 소프트웨어 모두) 관리하는 운영체제 소프트웨어 (Operating System, OS )이며, 카카오톡, 게임, 파워포인트는 응용소프트웨어( App lication) 라고 분류합니다. 운영체제 소프트웨어는 각종 앱도 관리해야 하며, 모니터, 메모리, 하드디스크 등 하드웨어  기기도 모두 관리해야 하는 막중한 역활을 담당하고 있습니다. 따라서, 운영체제 소프트웨어(이하 OS)를 만드는 것은 응용소프트웨어(이하 앱)을 만드는 것에 비해 상당한 시간과 기술이 필요합니다. 우리가 알고있는 OS는 윈도우즈, iOS, Android, Unix, Linux 등 몇 가지 없습니다. 그만큼 상용화하기 어려운 기술이며, 표준화(대중화) 시키기도 쉽지 않습니다. OS의 종류 일반적으로 우리가 말하는 코딩은 앱(카카오톡, 게임, 파워포인트 등)을 만드는 것을 의미합니다. 좀 더 자세히 표현하면 어떤 OS에 설치되어 동작하는 특정한 목적을 가진 소프트웨어를 만들는 것 이라고 설명드리고 싶습니다. OS든 앱이든 그것을 만들기 위해서는 2진수 기반(전기의 있음 1, 없음 0, 즉 디지털)으로 동작하는 컴퓨터에 내가 원하는 목적에 맞게 동작하도록 명령 을 내려야 하는데요, 이런 명령어들의 조합을 0과 1로만 인간이 작성한다면 굉장히 복잡한 형태가 될 것입니다. 예를 들면 이런 형태의 명령이 될 것입니다. 01110010111111001101110111....  (난해합니다) 왜냐하...

이 블로그의 인기 게시물

Qt Designer 설치하기

PyQt5 기반 동영상 플레이어앱 만들기