728x90

공부 정리 83

Kotlin] lateinit과 lazy

lateinit과 lazy는 지연 초기화를 위해 사용함.클래스 생성 동시에 사용하지 않는 변수에 대해서는 늦게 초기화할 때 사용하며, null은 필요한 경우에 한해서 명시. lateinitvar에 사용하고, var이기 때문에 초기화 값을 변경할 수 있음.null을 통해서 초기화하지 않고, 초기화 전까지 해당 var 변수에는 접근하지 못함.변수에 대해서 getter, setter를 정의할 수 없음.모든 변수에서 가능한 것은 아니며, primitive type에 대해서는 사용 불가능. lazyval에 사용하고, 호출 시점에 by lazy 정의로 초기화.val에서만 사용하기 때문에 불변이며, 초기화를 위해서 함수명을 한 번이라도 적어줘야 함.lazy을 사용하는 경우 기본 Synchronized로 동작. 값의 ..

OpenCV] Canny 함수

Canny 함수 Canny 알고리즘을 사용할 수 있게 해주는 함수. Canny 알고리즘은 엣지 검출 알고리즘이며, 에러율과 오차율, 응답성 측면에서 나쁘지 않다. void Canny(InputArray image, OutputArray edges, double threshold1, double threshold2, int apertureSize=3, bool L2gradient=false ) image : 변환할 그레이 이미지edges : 변환한 엣지 이미지threshold1 : 엣지 임계값threshold2 : threshold1 * ratioapetureSize : 커널의 사이즈

Library/OpenCV 2018.05.01

WPF] 어플리케이션 종료 방법

Application.Current.Shutdown() 일반적인 종료 방법. Shutdown을 호출하면 어플리케이션이 종료되며, Shutdown은 WPF에서 암시적으로 호출됨. Shutdown 되는 시기는 정확히 알 수 없지만 Exit 이벤트를 이용해서 실행이 중지되는 시점을 확인하고 필요한 작업을 처리할 수 있음. System.Environment.Exit() 현재 어플리케이션의 모든 쓰레드를 중단시켜 애플리케이션을 종료시키는 방법. 어플리케이션을 즉시 죽일 수 있음. Process.GetCurrentProcess().Kill() 강제로 프로세스를 종료시키는 방법. 강력하지만, 메인 윈도우에 종료 요청을 내리는 방식으로, 즉각적으로 앱에 종료를 요청하지 않아 시간 지연이 발생할 수도 있음.

OpenCV] findContours를 사용해 윤곽(contour) 추출하기

findContours를 이용해서 윤곽(contour)을 추출하는 걸 시도했다.외곽선 경계가 명확하지 않은 것도 있고, 응용 방법을 잘 몰라서 경계선이 명확히 그어지지 않은 것도 있는 듯 하다. 소스코드 #include #include #include #include using namespace cv; using namespace std; int main(void) { Mat image; image = imread("IU.jpg", 1); namedWindow("Display Window", CV_WINDOW_AUTOSIZE); imshow("Display Window", image); Mat gray; cvtColor(image, gray, CV_BGR2GRAY); Canny(gray, gray, 10..

Library/OpenCV 2018.04.26

[WPF] 다른 스레드에서 UI 스레드 쪽에 접근하기

1. 많은 UI 구성 요소에서 호출 스레드가 필요하므로 해당 스레드는 STA여야 합니다. 2. "다른 스레드가 소유하고 있는 오브젝트에 현재 스레드가 접근할 수 없다"(The calling thread cannot access this object because a different thread owns it.) 최근 윈폼 프로그램을 WPF로 바꾸는 과정에서 주기적으로 창을 호출하는 과정에서 위 오류가 발생했다.윈폼에서는 이런 일이 없었지만 WPF에서는 UI 스레드와 그렇지 않은 스레드로 나누고 있어 이런 오류가 발생한다.이럴 때는 Dispatcher.Invoke를 이용하여 해결해야 한다. Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate..

코틀린(Kotlin) 함수, 변수 정의

코틀린을 입문하는 사람들이 기존 Java로 안드로이드 개발을 하던 사람이거나, C#을 이용해 자마린을 쓰는 사람 등 다양한 사람이 있을 것 같다. 앞서 말한 두 언어와 코틀린의 가장 큰 차이점이라면 아무래도 세미콜론(;)을 사용하지 않는다는 것이다. 함수 정의 방법함수는 fun 키워드로 정의하며 함수 몸체 자체가 식(Expression)일 때는 return을 생략할 수 있음. fun sum(a: Int, b: Int) Int {return a + b}fun sum(a: Int, b: Int) = a + b 리턴 타입을 지정하는 방식이나, 기존의 인자 선언 방식이 C++, Java 같은 언어와는 방식이 약간 다르지만 형식 지정이 없는 것은 아니다. 경우에 따라서 함수의 리턴 값이 없는 경우에는 Unit(O..

두근두근 자료구조 2장 프로그래밍 프로젝트 1번

어떤 것들은 심심할 때마다 다시 공부하곤 하는데, 자료구조도 그 중 하나다. 개인적으로 공부하면서 정리한 것들이고 답이 틀렸을 수도 있기 때문에 지적은 언제나 환영한다. #include #pragma warning(disable:4996) #define MAX_DEGREE 101 typedef struct { int degree; float coef[MAX_DEGREE]; } Polynomial; Polynomial read_poly() { int i; Polynomial p; printf("다항식의 최고 차수를 입력하시오: "); scanf("%d", &p.degree); printf("각 항의 계수를 입력하시오 (총 %d개): ", p.degree + 1); for (i = 0; i b.degree)..

두근두근 자료구조 2장 연습문제

어떤 것들은 심심할 때마다 다시 공부하곤 하는데, 자료구조도 그 중 하나다. 개인적으로 공부하면서 정리한 것들이고 답이 틀렸을 수도 있기 때문에 지적은 언제나 환영한다. 1. int a[10][20]에서 배열이 차지하는 메모리 공간의 크기는 얼마인가? int형은 4바이트라고 하자.(4) 800 바이트, 10x20x4 2. float a[100]으로 선언된 배열의 시작 주소를 1000번지라고 할 때, 배열의 10번째 요소의 주소는 몇 번지인가?(4) 1040번지, 1000+10x4 3. 다음 배열 중에서 크기가 가장 큰 배열은?메모리 크기 기준(2) double array2[10]; 10x8 = 80바이트인덱스 크기 기준(3) char array3[40]; 40 4. 크기가 10인 배열 two[]를 선언하..

C#WPF] 텍스트박스에 숫자만 입력하게 만들기

명백히 숫자만 들어올 텍스트 박스에는 숫자만 들어가게끔 하는 것이 좋다.유저가 숫자만 입력할 수 있는 컨트롤이라는 것을 인지하게끔 해당 컨트롤에 입력하기 전에 숫자만 입력할 수 있다는 사실을 알리는 것이 가장 효과가 크지만, 호기심으로 혹은 실수로 숫자가 아닌 것이 입력하는 경우가 있기 때문에 입력 자체를 제한하는 것이 필요할 때가 있다. WPF에서는 KeyDown 이벤트나 PreviewKeyDown 이벤트가 발생할 때 아래 메서드를 작동시켜, 해당 컨트롤에 숫자 외의 텍스트가 입력되는 것 자체를 막는 방법을 사용할 수 있다. private void TextBoxFrequency_PreviewKeyDown(object sender, KeyEventArgs e) { if (!Char.IsDigit((cha..

728x90