함수에 mutable 객체인 리스트를 아규먼트로 전달하는 경우에 대해 알아봅니다. 2023. 9. 2 최초작성 파이썬의 데이터 타입에는 값을 수정할 수 없는 Immutable 객체와 값을 수정할 수 있는 mutable 객체가 있습니다. immutable 객체에는 정수, 실수, 문자열, 튜플이 해당되며 mutable 객체에는 리스트와 딕셔너리가 해당됩니다. immutable 객체는 값을 변경하면 다른 객체로 바뀌게 됩니다. 정수 객체를 코드로 살펴봅니다. 변수 a에 정수 객체 100을 대입합니다. >>> a = 100 id 함수는 객체의 고유 식별자를 리턴하는데 객체의 데이터가 저장된 메모리 주소로 볼 수 있습니다. >>> id(a) 4302575056 변수 a에 정수 객체 200을 대입합니다. >>> a..
파이썬 딕셔너리를 파일에 저장했다가 로드하는 예제 코드입니다. 2023. 10. 24 최초작성 본 포스트에서는 두 가지 방식으로 저장하는 방법을 소개합니다. 저장하는 방식에 따라 파일 내용을 편집기에서 볼 수 있는지 여부가 달라집니다. 편집기로 안보이는 바이너리로 저장 → pickle 편집기로 보이는 JSON으로 저장 → json pickle import pickle dict_example={1:"one", 2:"two", 3:"three", 4:"four", 5:"five"} print('원본 딕셔너리', dict_example, type(dict_example)) file=open("data.pickle","wb") pickle.dump(dict_example, file) file.close() fi..
데이터 파일을 메모리에 로드하지 않고 다룰 수 있는 dask를 간단히 사용해보았습니다. 자세한 사용방법은 아래 링크를 참고하세요. https://docs.dask.org/en/latest/ 2022. 1. 17 최초작성 소스코드 파일 이름을 dask.py로 하면 다음처럼 에러가 날 수 있으니 주의하세요. 임포트하려는 모듈이름 dask와 같은 소스코드 파일 이름을 사용했기 때문에 에러가 나는 것입니다. (newenv) webnautes@webnautesui-MacBookAir python_work % /Users/webnautes/miniconda3/envs/newenv/bin/python /Users/webnautes/Documents/python_work/dask.py Traceback (most re..
Process, Thread, Main 함수의 로그를 파일로 저장하는 logging Python 예제 코드입니다. 2022. 12. 25 최초작성 import logging import logging.handlers import multiprocessing import threading def listener_configurer(): root = logging.getLogger() h = logging.handlers.RotatingFileHandler('log_test.txt', 'w', 0, 0) f = logging.Formatter('%(asctime)s %(processName)-10s %(name)s %(levelname)-8s %(message)s') h.setFormatter(f) root..
OpenCV Python에서 화질 손실을 최소화하여 이미지를 확대하기 위해 Super Resolution을 사용하는 방법을 소개하고 있습니다. 2022. 11. 5 최초작성 2022. 11. 6 최종작성 OpenCV에선 미리 학습된 Super Resolution 딥러닝 모델을 사용하여 이미지를 확대할 수 있는 방법을 제공합니다. 본 포스팅에서는 실제 사용하는 방법을 소개합니다. 1. 우선 contrib 모듈이 포함된 OpenCV를 설치해야 합니다. 기존에 opencv-python 패키지를 설치한적이 있다면 삭제하고 설치하세요. pip list 명령으로 설치된 패키지 목록을 확인할 수 있습니다. pip install opencv-contrib-python 2. 미리 학습되어 배포되고 있는 모델을 다운로드합..
파이썬에서 실행중인 프로세스 이름과 pid를 출력하는 예제 코드입니다. 2022. 8. 6. 최초작성 from multiprocessing import Process def count(num): while num > 0: num = num - 1 print(num) print('process exit') if __name__ == '__main__': # Process를 사용하려면 꼭 적어줘야 합니다. t = Process(target=count, args=(10,)) t.start() # 실행중인 프로세스 리스트를 출력합니다. import psutil current_process = psutil.Process() children = current_process.children(recursive=True..
Python에서 Ctrl+C를 감지하는 예제 코드입니다. 윈도우와 우분투에서 동작이 됩니다. 2022. 12. 15 최초작성 프로그램을 실행하면 아무 출력없이 대기상태가 되는데 Ctrl+C를 누르면 프로그램이 종료합니다. import signal import sys # Ctrl+C 감지시 실행되는 함수입니다. def signal_handler(sig, frame): # 메시지를 출력하고 프로그램을 종료합니다. print('You pressed Ctrl+C!') sys.exit(0) # Ctrl+C를 누른것을 감지하면 signal_handler 함수를 호출하도록 합니다. signal.signal(signal.SIGINT, signal_handler) print('Press Ctrl+C') # 무한 루프로 ..
이미지를 세로 방향으로 연결하는 vconcat 함수와 이미지를 가로 방향으로 연결하는 hconcat 함수 예제입니다. 2022. 11. 3 최초작성 vconcat 이미지를 세로 방향으으로 연결하는 vconcat 함수 예제입니다. 이미지의 너비가 똑같아야 합니다. import cv2 img1 = cv2.imread('apple.png') img2 = img1.copy() # 이미지를 복사하여 사용합니다. # 세로방향으로 이미지를 연결합니다. 리스트에 이미지를 추가하여 2개 이상 연결할 수 있습니다. img = cv2.vconcat([img1, img2]) cv2.imshow('img', img) cv2.waitKey(0) hconcat 이미지를 가로 방향으으로 연결하는 hconcat 함수 예제입니다. 이미..
miniconda/anaconda에서 사용하는 디스크 크기를 줄이는 방법에 대해 다룹니다. 2023. 9. 10 최초작성 /home/사용자이름/miniconda3/pkgs 디렉토리(Anaconda 에선 다른 경로)는 Miniconda (또는 Anaconda) 환경에서 패키지들을 설치할 때 임시적으로 다운로드 받은 파일들이 저장되는 위치입니다. 패키지를 설치한 후에는 필요하지 않으므로 디스크 공간을 확보하기 위해 일부를 지울 수 있습니다. 우선 다음 명령으로 사용중인 디스크 공간의 크기를 체크해봅니다. anaconda를 사용중이라면 경로에서 miniconda3를 anaconda3로 변경하면 될 것입니다. du -sh ~/miniconda3/pkgs/ du -sh ~/anaconda3/pkgs/ 확인해보니 ..
웹캠 / 비디오 파일에서 가져온 이미지에 fps 표시하여 화면에 출력하는 OpenCV Python 예제 코드입니다. 2022. 03. 06 최초작성 2023. 09. 10 웹캠/비디오 파일을 성공적으로 열었는지 여부를 체크 # 참고 # https://github.com/dgseten/bad-cv-tfm/blob/2ada9b71f85aa5eb75c1f4a039cb14d697ee2f69/tools/video/video-player-wait-fps.py # https://stackoverflow.com/a/65146731 import cv2 import time # 이미지에 텍스트를 출력하는 함수 def draw_text(img, text, x, y): font = cv2.FONT_HERSHEY_SIMPLEX..