2025/02 58

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

정규표현(regular expressions)

정의복잡한 문자열을 처리할 때 사용하는 기법 임포트import re(대표적) 치환 메서드② 를 사용하자① result = re.sub(r정규표현, 치환문자(열), 대상문자열)② regex = re.complie(r정규표현, re.MULTILINE )  ※ 대상문자열이 개행을 포함하고 있다면 re.MULTILINE으로 행을 구분     result = regex.sub(치환문자(열), 대상문자열 ) r " "   은 raw 를 의미하며 " " 안의 특수기호(개행문자등)를 문자로써 표현[ ] 안에 있는 문자 개별로 존재하면 치환, 삭제regex = re.compile(r'[346]')str1 = regex.sub('x', '03-5454-68284') -> '0x-5x5x-x828x' 참조별도 표기  [0-..

data science/python 2025.02.07