분류 전체보기
-
VideoWriter컴공지식/컴퓨터비전 2024. 9. 9. 00:17
VideoWriter 생성자는 OpenCV에서 비디오 파일을 생성하고 프레임을 기록할 때 사용하는 객체다.객체 정의는 다음과 같다.VideoWriter(const String& filename, int fourcc, double fps, Size frameSize, bool isColor=true) filename은 비디오를 저장할 파일 이름이다. 예를 들어 "output.avi"처럼 파일 경로와 이름을 지정한다.어디에 저장될지, 어떤 이름으로 저장될지를 결정하는 거다.fourcc는 비디오 코덱을 나타내는 4글자 코드다. 예를 들어, MJPG, XVID 같은 값들이 있다.코덱이란, 비디오 프레임을 어떻게 압축해서 저장할지를 결정하는 방식이다. 코덱에 따라 비디오 품질과 파일 크기가 달라진다.VideoWr..
-
OpenCV로 도형 그리기컴공지식/컴퓨터비전 2024. 9. 9. 00:03
사각형 그리는 법함수 정의void rectangle(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0) Mat& img는 사각형을 그릴 이미지다. 이 이미지 위에 사각형을 그리게 된다.Point pt1는 사각형의 첫 번째 꼭짓점 좌표다. 이 좌표가 사각형의 한쪽 모퉁이가 되는 거다.Point pt2는 사각형의 반대쪽 꼭짓점 좌표다. 이 좌표가 사각형의 다른 모퉁이가 돼서, 두 점으로 사각형이 만들어진다.const Scalar& color는 사각형의 색상이다. 흑백 이미지일 경우에는 밝기 값으로 설정되고, 컬러 이미지에서는 BGR (Blue, Green, Red) 값으로 설정한다.i..
-
히스토그램이란?컴공지식/컴퓨터비전 2024. 9. 8. 23:17
히스토그램은 이미지에서 각 픽셀의 밝기 수준(=인텐시티 값)이 얼마나 자주 나타나는지를 나타내는 그래프다.이제 다음 변수를 살펴보자 h(r_k) 이게 무엇을 의미하냐면 r_k라는 인텐시티값을 가진 픽셀의 수를 나타내는 함수다.그러니까 만약 r_k가 20이고(인텐시티값이 20) 이 인텐시티값을 가진 픽셀이 100개 있으면 h(r_k)는 100이 되는거다.그러니까.. 이 함수의 값들을 알고 있으면 인텐시티의 분포를 볼 수 있는거다.예를 들어, 밝은 부분이 많으면 높은 인텐시티 값 쪽의 h(r_k) 값이 클 거고, 어두운 부분이 많으면 낮은 인텐시티 쪽의 값들이 커지는거다.3X3 매트릭스에는 각 픽셀의 인텐시티 값이 적혀있다.20인텐시티를 가진 픽셀의 값은 4개이고, 50의 인텐시티 값을 가진 픽셀은 2개이고..
-
BNF의 한계컴공지식/프로그래밍언어론 2024. 9. 8. 15:17
Linux에서는 공백을 허용하지 않는다.예를 들어 다음과 같은 파일 이름이 있다고 해보자filename with spaces and quotes 12.3.txt우리가 BNF에 공백 문자("\"")를 정의해 놓아도 Linux는 이것을 6개의 식별자(identifier)로 본다. 근데 만약 escape 처리를 해놓으면 안전하게 공백을 처리할 수 있게 된다.예를 들어 다음과 같이 말이다.filename\ with\ spaces\ and\ quotes\ 12.3.txt 또한 BNF는 중복 처리적으로 한계가 있다.예를 들어 다음과 같은 코드가 있다고 해보자public public int x; BNF 문법적으로 틀렸다고 하지는 않지만 실제로는 컴파일 오류가 난다..BNF로는 이 중복 오류를 체크할 방법이 없다는 게..
-
왜 대부분의 프로그래밍 언어가 대체(substitution)기능을 지원하는가?컴공지식/프로그래밍언어론 2024. 9. 8. 14:52
코드에서 같은 연산을 여러 번 반복해서 사용하게 되면, 그 계산을 매번 다시 하는 건 시간도 낭비고, 실수할 가능성도 커진다.예를 들어 1 + 1 을 직접 계산하는 과정을 1만번 반복한다고 생각해봐라..정말 비효율적이고 이미 증명돼있는 값을 1만번 계산하여 다시 도출하는 꼴이 된다.그래서 많은 프로그래밍 언어는 이걸 최적화하고, 코드 유지보수를 쉽게 하려고 '대체' 기능을 제공하는 거다. # 대체를 안 한 경우 result = 10 + 20 + 30 other_result = 10 + 20 + 30 + 40 # 대체를 한 경우 sum_value = 10 + 20 + 30 result = sum_value other_result = sum_value + 40 # 대체를 안 한 경우 x = 10 * 5 y..
-
BNF로 산술 표현식 정의하기컴공지식/프로그래밍언어론 2024. 9. 8. 14:49
특정 언어를 만든다고 생각해보자이 때 우리는 산술 표현식을 정의해야 할 필요가 있다.일단 정수랑 float의 연산식이나 숫자를 표현하는 문법을 정의하려면 어떻게 해야할까?다음과 같다. ::= | + | - | * | / ::= -? + ? ::= .+ ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 이렇게 정의하면 더하기, 빼기, 곱하기, 나누기와 같은 단순한 산술 표현식을 사용하는 게 가능해지고단순하게 number를 표시하는 게 가능해진다.뒤에 ?(물음표)는 있어도 되고 없어도 되는 것을 뜻한다. -?는 음수일 수도 있으니 물음표를 붙인거고 ?는 소수가 ..
-
변동성(혹은 분산)을 측정하는 방법경제 2024. 9. 7. 22:44
평균 같은 것만으로는 데이터가 어떻게 퍼져 있는지 알 수 없으니 데이터가 얼마나 흩어져 있는지 알려주는 방법을 알아야 한다.그런 방법들은 아래와 같다. Range: 데이터에서 가장 큰 값과 가장 작은 값의 차이를 말한다. 제일 간단한 변동성 측정 방법이다. Interquartile Range (IQR): 제1사분위수(Q1)와 제3사분위수(Q3)의 차이다. 즉, 데이터 중간 50%가 어디에 몰려 있는지를 보여주는 거다.극단적인 값(이상치)의 영향을 덜 받으니 많이 쓰인다. Variance(분산): 각 데이터가 평균에서 얼마나 떨어져 있는지를 계산한 값이다. 평균과의 차이(편차)를 제곱해서 다 더하고, 데이터 개수로 나눈 값이다. 분산이 크면 데이터가 많이 퍼져 있는 거고, 작으면 덜 퍼져 있다는 뜻이다...
-
평균, 중앙값, 최빈값, 그리고 백분위수경제 2024. 9. 7. 20:57
Mean: 평균값이다. 다 더해서 개수로 나누는 거 Median: 중앙값인데, 데이터를 크기 순으로 나열했을 때 딱 가운데 오는 값이다.(Median Filtering이 생각난다)극단적인 값(이상치, outliers)가 있을 때 평균보다 중앙값을 더 신뢰할 수 있다.예를 들어, 부자 한 명이 엄청나게 많은 돈을 벌고 있는 집단에서는 평균을 쓰면 부자가 전체 평균을 확 끌어올려서 나머지 사람들이 모두 부자인 것처럼 보이기 때문이다 ㅋㅋ하지만 중앙값을 쓰면 그 극단적인 값을 무시하고 전체의 중간 위치를 보여준다.근데 만약 짝수개의 데이터가 있으면.. 어떤 값이 중앙값이 될까?만약 4개의 값이 있다면 2번째, 3번째 값 중 어떤 값이 중앙값이 될까?데이터셋이 1, 2, 3, 4라고 해보자.여기서 가운데에 있는..