전체 글 209

Dockerfile 알아보기

conda 가상환경을 작성하여 flask 웹 어플리케이션 작성에 필요한 라이브러리를 인스톨하고 app.py 에 작성했다고 하자. 같은 폴더에 아래와 같이 인스톨한 라이브러리 리스트를 작성하자. pip list --format=freeze > requirements.txt 그러면 폴더에는 - app.py - requirements.txt 가 존재한다. 같은 폴더에 Dockerfile 화일명으로 아래와 같이 작성하자. FROM python:3.9-slim-buster WORKDIR /app COPY . . RUN pip install -r requirements.txt EXPOSE 5000 ENV FLASK_APP=app.py CMD ["flask", "run", "--host", "0.0.0.0"] FRO..

contour / labelling

contour  는 모양의 외곽에 위치한 포인트들을 연결하는 커브를 의미한다. OpenCV 에서의 contour 는 크게 두가지 함수가 있다.findContours()    : 외곽선상의 포인트 좌표 수집drawContours()  :  수집된 좌표를 연결한 선긋기수집된 포인트 좌표로 구할 수 있는 것:무게중심moments()외곽선 안쪽의 면적contourArea()외곽선의 길이arcLength()간략한 외곽선approxPolyDP()울퉁불퉁 정도convexHull()울퉁불퉁 여부isContourConvex()외곽선을 내부에 포함한 사각형boundingRect()회전을 고려한 외곽선을 내부에 포함한 사각형사각형의 4코너 포인트minAreaRect()boxPoints()외곽선을 내부에 포함한 원minEnc..

opencv 2023.12.07

(python) text 를 길이 단위로 분리

OpenAI Embedding 기능을 사용하기 위해 PDF 에서 Text를 추출하여 특정 길이로 분리할 필요가 있었어 langchain 의 CharacterTextSplitter 를 사용하였다. 인스톨 pip install langchain CharacterTextSplitter from langchain.text_splitter import CharacterTextSplitter story = '어느 마을에 양치기 소년이 하나 있었는데,\n 늑대들이 나타나 양을 물어간다느니 잡아먹는다느니 식으로 수시로 장난삼아 소리치곤 했다. 두세 번 정도는 마을 사람들이 놀라 부리나케 달려왔다. 하지만 그 때마다 골탕을 먹고 바보가 된 기분으로 화를 내거나 투덜거리며 돌아갔다.\n 그러던 어느 날 진짜로 늑대가 나타..

data science/python 2023.12.06

(python) PDF 내의 텍스트 추출하기

PDF내의 텍스트를 추출하는 Python 용 pdfminer.six 를 소개한다. 인스톨 (python 3.8 이상) pip install pdfminer.six from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import TextConverter from pdfminer.layout import LAParams from pdfminer.pdfpage import PDFPage from io import StringIO import re # PDF 화일 오픈 pdfname = "./sample.pdf" fp = open(pdfname, 'rb') # 리소스 매니저 인스턴스 생성 rsrc..

data science/python 2023.12.03

1. 심전도 분석에 관해

드라마에서 주인공이 사고를 당해 응급실에 실려가면 모니터로 심전도가 표시되는 광경을 많이 봤을 것이다. 일본의 한 건강관리 회사에서 심장부위에 부착을해서 24시간 심전도 데이터를 리얼타임으로 저장하는 디바이스를 가지고 측정자의 건강상태를 체크하는 프로그램을 작성한적이 있다. 이때 얻었던 심장에 관련된 건강 지식을 공유하고 파이선 프로그램으로 구현하고자 한다. 일단, 심전도를 ECG(electrocardiogram) 또는 EKG 라고 한다. ECG를 분석해서 병이 있다고 단언하는 것은 의료 행위이므로 위법이다. 단순히 데이터를 분석해서 어드바이스하는 수준으로 끝나야 할 것이다. 일단 ECG의 형태와 어떻게 생성되는지 알아보자. 일단 심장의 박동은 좌심방(Left atria) 에서 전기 신호가 발생되면 시작..

공백 메우기

왼쪽과 같은 b/w 이미지를 오른쪽과 같이 공백을 메우는 방법을 OpenCV로 알아보자.아울러 아래의 기법도 확실히 알아두기로 하자.findNonZero 함수를 이용한 흰픽셀의 좌표얻기convexHull 함수를 이용한 어바우트한 윤곽 포인트 획득 이미지를 그레이스케일 변환하여 읽어 들이고 10 을 기준으로 b/w 변환한다. cv::Mat inputImage = cv::imread("input.jpg", CV_LOAD_IMAGE_GRAYSCALE); cv::threshold(inputImage, inputImage, 10, 255, 0); b/w 이미지내에서 흰색픽셀의 좌표를 찾아내서 Mat 안에 보관cv::Mat nonZeroCoordinates; cv::findNonZero(inputImage, non..

opencv 2023.12.02

b/w 이미지의 칼럼(수직방향)별 검정(=0)픽셀수 카운트

이미지에 있어서 검은 테두리 부분을 제거 하는 등을 위해서는 각 로우별, 칼럼별로 검은 픽셀수를 카운트하여 어느 threshold 치 이상인 경우에는 처리하는 로직등의 경우에 아래 코드가 유용하게 사용할 수 있을 것 같다. 아래코드는 수직방향인 칼럼의 검정픽셀수를 계산한다. 각 로별의 검정픽셀수도 응용할 수 있으리라 본다. // GRAY인 경우에는 읽어들어 cv::threshold 로 이진화 할 필요가 있다. // 이하는 이미지 자체가 흑백만이 존재하는 가정으로 하자. cv::Mat1b img = cv::imread("img.png", CV_LOAD_IMAGE_GRAYSCALE); cv::Mat1i black_pixels(img.cols, 1); for(int x = 0; x < img.cols; x++..

opencv 2023.12.02

Windows 노트북에 Ubuntu Linux 설치 부팅

Cloud 환경을 비롯해 backend의 서버로서 Ubuntu Linux 에 익숙할 것이다. 개발환경으로 많이들 Mac Book을 사용하지만 따로 구매하기에도 부담일 수 있다. 그래서 간단히 가지고 있는 노트북을 Windows OS환경을 전혀 건들이지 않으면서 사용목적에 따라 간단히 Windows / Ubuntu 선택적으로 부팅하는 방법을 설명하겠다. (결코 멀티부팅을 설정하는게 아님.) 준비물) USB 메모리 ( Ubuntu bootable image 생성용 )마이크로 SD 슬롯이 있는 노트북 ( 자신의 경우 LG Gram )마이크로 SD 카드 128기가, 아니면 256기가. 1. Windows 에서 Ubuntu bootable USB stick 만들기    https://ubuntu.com/tutor..

잡동사니 2023.11.29

cv::Mat 이모저모

본론으로 들어가지 전에 C++ 기초가 부족하시는 분들이 있을 것 같아서 왜 앞에 cv:: 를 붙이나요? 라고 하면 opencv 의 라이브러리(dll)를 생성할 때 namespace cv { 코드 } 형식으로 만들었기 때문에 명시적으로 cv:: 를 적어주는 것이다. 만약 자신의 코드화일의 선언부에 using namespce cv; 를 선언해 주면 cv:: 를 생략해 줘도 상관없다. 하지만 라이브러리 간에 똑같은 함수를 사용하는 경우가 있고 코드를 알기 쉽게 하기 위해서 개인적으로는 cv:: 를 붙여서 코딩하는 것을 선호한다. 단순히 선언만 -> 이미지 공간은 할당되지 않고 클래스 변수만 스택에 저장 cv::Mat image; 이미지 공간 할당 넓이, 높이, 픽셀타입, (옵션)초기값 을 지정한 경우 - (1..

opencv 2023.11.29

끊이지 않는 국회의원의 차별 발언

스기타 미오(杉田 水脈)라는 자민당 여성 국회 의원이 작년 기시다 제2차 내각에서 총무대신 정무관에 임명되었지만 과거 차별적인 표현이 문제가 되서 작년 12월에 자리에서 물러 났다. 문제가된 과거 표현은 아래와 같다. 논문에 "LGBT(성소수자) 사람들은 생산성이 없다." UN회의에 참가시의 일에 대해 자신의 블로그에 "치마저고리(재일조선인, 한국인)와 아이누 민족의상의 코스프레 아줌마 마저 등장" 등을 게재 이런 그녀가 최근 유투브방송에 나와서 아이누 문화진흥사업에 관해 "공금 쭈쭈" (공금을 쭈쭈 빨아먹는 표현) 발언을 해서 기사다 수상이 27일 국회 예산위원회에서 사과하는 사태까지 발생했다. https://news.yahoo.co.jp/articles/4f1004143504db8ca56d5581bf..