python 7

Python 2, 3 동시 사용 환경설정 on Windows 10

python 2.7 버젼을 사용하는 서버에서 작업할 일이 생겨 작업용 컴퓨터에 환경세팅중에 쓰는 글 python 3.8.6 이 기존 설치되어 있는 환경에서 python 2.7 버젼을 바로 설치 그 이후 심볼릭링크로 python2를 cmd에서 쳤을 시 python2.7이 열리게 세팅 python2.7 폴더내의 python.exe와 python pip위치를 링크설정 '''mklink (윈도우파일 위치) (원하는 파일 위치)''' mklink C:\Windows\python2.exe C:\Python27\python.exe mklink C:\Windows\pip2.exe C:\Python27\Scripts\pip.exe 이 때엔 cmd창을 관리자 권한으로 실행하면 된다. 완료 끝

python 2020.11.04

Python iterable 객체의 데이터를 받는 method 속도비교

대량의 데이터를 전처리를 하다가 현재 코딩한 방법보다 더 빠르게 전처리할 방법들을 찾아보다가 iterable 객체 처리 속도 증가 방법을 고민하게 됨, 현재 머신러닝 학습전 데이터 전처리 중간과정을 통하여 test해보았다. 총3가지의 방법으로 비교 1. append를 이용한 list data받기 string을 list로 반환하는 공통 함수 def strLst(string): str_ = string[1:-1] str_ = str_.replace("'",'') str_ = str_.split(', ') return str_[:10000] tmp list변수를 선언한후 append로 가져오는 방법을 주로 사용 tmp = [] for x in test[:1000]: tmp.append(strLst(x)) 2...

python 2020.07.23

Email parser 제작기

예전에 대량의 이메일 안의 악성코드들을 분석하게 되면서 일일이 폴더에 메일 정보정리와 악성코드들을 저장하다가 python으로 작업한 내용 이런식의 eml파일이 수백건이 들어왔었다.. 보낸사람,제목 받는사람 등등등 여러 정보들을 수집해서 정리해야 했고 파일들을 일일 폴더내에 저장해야 되서 자동 폴더 생성과 eml parser를 따로 따로 제작하게 되었다. ** 스피어 피싱의 일종으로 pc정보 수집하는 악성코드였던걸로 기억한다. #-*- coding:utf-8 -*- from email.parser import Parser from email import policy from email.parser import BytesParser import os import email from email.message ..

python 2020.07.22

Python OpenCV를 이용한 라이즈 오브 킹덤즈 매크로(4)

화면 전처리에 대해 얘기를 해보자면 여러 사진들로 테스트를 해보았다. 하지만 모든 사진들에서 feature matching이 성공적이진 않았다. 원본사진 매칭 결과물 첫번째 사진에선 아이콘 두개중 두번째를 찾지 못하였다. 원인은 아이콘의 색이 달라서 그렇지 않을까 추정하게 된다. (조금 더 전처리를 어떻게 해보면 될 것 같지만 추 후에 하는 것으로) 이미지 전처리 과정에서 grayscale 후 일정 색이하는 검은색으로 처리하는 과정을 거쳐서 그런것 같다. 아래 코드 후에 외곽선 검출과 선명도를 높이는 과정을 거친 후 매칭이 여러 이미지 전처리중에서 가장 성공률이 높았다. gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) for idx,x in enumerate(gray): f..

python 2020.02.10

Python OpenCV를 이용한 라이즈 오브 킹덤즈 매크로(3)

그림의 아이콘부분들을 나누는 것까지 되었다면 이제 main 그림에서 같은 아이콘 찾기를 해야 한다. icon 그림과 main의 그림을 보면 아이콘이 회전되어 있거나 색이 다른 것을 확인 할 수 있다. 아이콘을 찾기 위해서 feature matching 중 SIFT (Scale-Invariant Feature Transform)을 사용하였으며, 관련 내용은 https://docs.opencv.org/3.4/da/df5/tutorial_py_sift_intro.html에서 확인 할 수 있다. 아이콘들의 영역들을 변수에 담은 후에 하나씩 이미지를 잘라서 feature matching을 하게 되면 아래의 그림처럼 나오게 된다. 현재 정확하게 같은 좌표를 찾은 것을 확인 할 수있다. 하지만 다른 사진으로 보게되면..

python 2020.02.10

Python OpenCV를 이용한 라이즈 오브 킹덤즈 매크로(2)

이제 매크로를 위해 가장 중요한 geetest의 인증기를 해결해야 한다. 아래의 사진을 보면 윗 부분의 아이콘들을 보고서 아래의 그림에 순서맞게 클릭을 하여야 한다. 먼저 윗 테두리의 아이콘들을 읽어야한다. 하지만 아이콘의 갯수가 항상 랜덤하기 때문에 먼저 아이콘의 갯수와 영역을 나누는 것을 먼저 시작하여야 한다. 이미지 전 처리를 한 후 findcontours로 외곽선을 가져와 object의 갯수를 가져와 아이콘의 숫자를 파악 하였다. _, contours, _ = cv2.findContours(sure_bg, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) contours에는 np.array로 값들이 담겨 있는대 len(contours)를 하게 되면 외곽선검출로 오브젝트의 갯수를..

python 2020.02.09

Python OpenCV를 이용한 라이즈 오브 킹덤즈 매크로(1)

오랜만에 폰게임을 시작하게 되면서 매크로를 만들어 볼까 하다가 시작하게 된 프로젝트! 라오킹 매크로의 가장 큰 적은 바로 이 인증기를 뚫는 것이다. 라오킹에선 bot을 막는 geetest를 사용한다 geetest의 위 2가지 방법 중 랜덤으로 선택되여 인증해야한다. 인증기를 뚫는 것은 차 후에 글을 쓰고 먼저 이미지 인식을 통해 버튼을 누르는 매크로를 먼저 만들어 보았다. 라오킹에는 지도를 탐색하여 맵의 안개를 걷어내야 하는대, 간단하게 opencv의 template matching을 이용하여 좌표를 찾아 내었다. opencv의 버젼은 opencv-contrib-python==3.4.2.16으로 pip으로 간단히 설치할 수 있으며 구 버젼을 설치한 이유는 추 후에 feature matching을 사용하기..

python 2020.02.07