전체 글 208

여러 단어를 한 단어로 바꿔치기

1. 문자열을 스페이스로 분리하여 대체s = 'Macron made the announcement to mark the opening of the Paris AI Summit.' # 바꾸고자 하는 단어들 li = ["announcement", "opening", "Summit."] # 새로운 단어 k = "Trump" # 스페이스로 분리해 단어 리스트를 만들고 바꿀 단어들과 같다면 새로운 단어로 대헤 res = ' '.join([k if word in li else word for word in s.split()]) print(res)-> Macron made the Trump to mark the Trump of the Paris AI Trump 2. 정규표현 '|' 을 이용 import re s = ..

data science/python 2025.02.11

반복되는 특정 단어를 복수 단어로 바꿔치기

시나리오DB 에 LLM의 프롬프트 형식을 아래와 같이 저장해서 나중에 꺼내와서 사용자가 입력한 문자열로 바꾸고자 할때.예) promt = "{input} 은 어느나라의 {input} 입니까?" 방법1prompt = "{input} 은 어느나라의 {input} 입니까?"repl_str = '{input}'repl_list = ['서울', '수도'] for ele in repl_list:     prompt = promt.replace(repl_str, ele, 1) # 서울은 어느나라의 수도 입니까? 방법2import re prompt = "{input} 은 어느나라의 {input} 입니까?" repl_str = '{input}' repl_list = ['서울', '수도']# re.sub 두번째는 lamb..

data science/python 2025.02.11

C# 와 C++/CLI Dll 사이의 이미지 전달

Windows 에서 GUI 개발은 MFC 보다 UI도 풍부하고 다루기 쉬운 C# 으로 개발하는게 편리하다.이러한 .NET 환경에서 OpenCV(C++) 을 사용하기 위해서는 Wrapper 인 OpenCVSharp 을 이용하는 방법도 있으나 interface를 새로 알아야 한다는 단점이 있다. 하지만 직접 OpenCV를 C++ 그대로 사용하고자 할때는 C++/CLI(Managed Code와 Native C++ 혼용) 환경을 이용하자.프로젝트 생성 방법 GUI(C#) 에서 읽어들인 BMP 메모리를 C++/CLI 에 전달하여 OpenCV로 처리한 후 결과 이미지를 다시 GUI에 전달하는 방법은 아래와 같이 .NET Managed memory 와 Native Heap memory에의 변환 처리가 필요하다. 1...

opencv 2025.02.10

Naïve Bayes (나이브 배이스) Classifier

B가 true일때 A가 발생할 수 있는 확률은 A가 true일때 B가 발생할 수 있는 확율 곱하기 A의 확률을 B의 확률로 나눈것 (뭔말인지 모르겠다.)머신러닝에서 표현하면 아래와 같다.B =여러가지  Evidence(=특징) A = Outcome(=결과) P(A | B) = 여러가지 Evidence가 있을 때 Outcome이 나올수 있는 확률(=Likelihood) P(Multiple Evidence)는 모든 Outcome 확율 계산시 똑같이 사용하는 조건이므로 계산에서 제외해도 OK 설명 샘플) 과일(=Outcome)로써 Banana, Orange, Other Fruit 이 있고 특징(=Evidence)으로써 Long, Sweet, Yellow 가 있다고 하자.기본확률값 Evidence확률값 P(Ba..

(opencv) 이미지위의 직선상의 픽셀위치 구하기

아래 이미지의 빨간 라인의 픽셀의 값들을 알아 보고자 하자. 출발 포인트를 (200, 100), 도착 포인트를 (250, 180) 이라 할 때 방법 1) 마스크 이미지를 이용cv::Mat image = cv::imread("image");cv::Point A(200,100); cv::Point B(250,180); // 바탕이 검정이 마스크 이미지를 생성// 또는  cv::Mat mask(image.size(), uchar(0), CV_8UC1); cv::Mat1b mask(image.size(), uchar(0));// 출발점과 끝점을 잇는 하얀선을 그림cv::line(mask, A, B, cv::Scalar(255)); std::vector points1; cv::findNonZero(mask, po..

opencv 2025.02.08

(opencv) pixel access time

샘플 Mat : 5000 x 3000 BGR Color All Blackcv::Mat image = cv::Mat::zeros(cv::Size(5000, 3000),CV_8UC3); RGB 의 합을 계산 방법 1) at(y좌표, x좌표)int sum = 0; for (int i = 0; i    for (int j = 0; j          // gray 이미지의 경우          // uchar pixel = image.at(i, j);          cv::Vec3b pixel = image.at(i, j);          sum += pixel[2] + pixel[1] + pixel[0];    } } 방법 2) 선두 메모리 포인터 사용int sum = 0; for (int i = 0; i..

opencv 2025.02.08