분류 전체보기 77

06. 포인터

1. 포인터 개념 및 기본 문법포인터는 특정 타입의 변수가 저장된 메모리 주소를 가리키는 변수포인터를 선언할 때는 해당 포인터가 가리킬 데이터 타입을 함께 지정하며, 선언 시 * 기호를 사용int value = 10;int *p = &value;위 코드에서 value는 정수 변수이고, p는 value의 주소를 가리키는 포인터&value는 value 변수의 메모리 주소를 얻는 주소 연산자p에 value의 주소가 저장되면, *p (포인터 역참조)를 통해 p가 가리키는 주소의 실제 값에 접근할 수 있음예를 들어 printf("%d\n", *p);는 value의 값을 출력2. 포인터 연산포인터에는 주소값을 다루기 위한 몇 가지 연산이 가능포인터에 정수를 더하거나 빼는 연산을 하면, 가리키는 타입의 크기만큼 주소..

Language/C 2025.03.18

05. 배열과 문자열

1. 배열 개념 및 활용배열을 선언할 때는 타입과 크기를 지정int numbers[5];numbers라는 이름의 연속된 정수 5개 분량의 메모리가 할당 배열 요소는 0부터 시작하는 인덱스(index)로 접근하며, numbers[0]부터 numbers[4]까지 사용할 수 있음배열을 선언하면서 초기화int evens[3] = {2, 4, 6}; // 크기가 3인 배열을 선언하고 2, 4, 6으로 초기화또한 배열은 반복문과 함께 사용되어 여러 데이터를 처리하는 데 편리int sum = 0;for (int i = 0; i 위 코드에서는 evens 배열의 각 요소를 차례로 합하여 sum에 누적합2. 다차원 배열C에서는 배열을 여러 차원으로 선언할 수도 있습니다 (2차원, 3차원 등)2차원 배열은 흔히 행렬(ma..

Language/C 2025.03.18

04. 함수

1. 함수의 선언과 정의C에서 함수를 사용하려면 함수의 선언(declaration)과 함수의 정의(definition)가 필요함수 선언은 컴파일러에게 함수의 이름, 반환 타입, 매개변수 정보를 알려주는 프로토타입 역할을 하며, 함수 정의는 실제 함수의 구현(몸체)을 제공일반적으로 함수 정의 전에 선언(프로토타입)을 미리 작성하거나, 함수 정의 자체를 main 함수보다 앞에 놓음두 숫자의 합을 반환하는 함수 add를 선언하고 사용하는 방법#include // 함수 선언 (프로토타입)int add(int x, int y);int main() { int result = add(3, 4); printf("3 + 4 = %d\n", result); return 0;}// 함수 정의int add(i..

Language/C 2025.03.18

03 제어문과 반복문

1. 조건문 (if, switch-case)1) if 문은 주어진 조건식이 참(true)일 때 특정 코드 블록을 실행하고, 거짓(false)일 때는 다른 코드 블록(또는 아무 것도 하지 않음)을 실행if (조건식) { // 조건이 참일 때 실행할 코드} else { // 조건이 거짓일 때 실행할 코드}2) else-if를 사용하면 여러 조건을 순차적으로 검사할 수도 있음int num = -5;if (num > 0) { printf("양수입니다\n");} else if (num 3) switch-case 문은 하나의 변수 값에 따라 여러 분기(case) 중 하나를 실행할 때 사용case 라벨에 해당하는 코드를 실행하며, 일반적으로 break를 사용하여 해당 분기를 실행한 후 흐름을 빠져나감..

Language/C 2025.03.18

02. 기본 문법

1. 변수와 데이터 타입C에서는 데이터를 저장하기 위해 변수를 선언하며, 각 변수는 저장할 값의 종류에 따라 데이터 타입(data type)을 가져야 함기본 데이터 타입으로 정수형(int), 문자형(char), 실수형(float) 등이 있음int age = 25; // 정수형 변수 age를 선언하고 25로 초기화char grade = 'A'; // 문자형 변수 grade를 선언하고 'A'로 초기화double pi = 3.14; // 실수형 변수 pi를 선언하고 3.14로 초기화위의 예에서 int는 4바이트 정수를, char는 1바이트 문자를, double은 8바이트 실수를 저장변수 선언 시 초기값을 줄 수도 있고, 나중에 할당(= 연산자 사용)할 수도 있음변수를 사용하기 전에 반드..

Language/C 2025.03.16

01. C언어 소개

1. C언어 소개1) C언어의 역사와 특징C 언어는 1972년 벨 연구소(Bell Labs)에서 데니스 리치(Dennis Ritchie)가 개발한 프로그래밍 언어원래는 유닉스(UNIX) 운영체제를 만들기 위해 고안되었으며, 저수준(low-level) 언어인 어셈블리어의 단점을 보완하기 위해 설계되었음C 언어는 절차지향적 프로그래밍 언어로, 간결하고 효율적인 문법이 특징이식성(Portability)이 뛰어나 다양한 하드웨어와 운영체제에서 사용할 수 있으며, 다른 고급 언어들에 비해 컴파일된 실행 파일의 실행 속도가 매우 빠름C 언어는 메모리와 하드웨어 자원을 직접 제어할 수 있는 기능을 제공하기 때문에 시스템 프로그래밍(운영체제, 임베디드 시스템 등)에 적합포인터를 이용한 직접적인 메모리 접근, 비트 단위..

Language/C 2025.03.16

OpenCV 이미지 검출 (2)

윤곽선 (Contour) 검출Contour(윤곽선)과 Edge(가장자리)의 차이는 Segment(서로 다른 두 점을 연결하는 가장 짧은 선)의 유무Edge : 필터링을 통해 가장 자리에 대한 정보만 있는 상태Contour : 가장 자리 정보를 모아서 선을 이루고 특정 도형으로 분류된 상태보통 Edge 검출 후 Segmentation(픽셀을 그룹별로 분류하는 것) 을 거쳐 Contour 이미지를 생성일반적으로 Contour 작업을 거쳐야 사물 인식이 가능윤곽선 (Contour) 계층 구조 (Hierarchy)다음 / 이전 윤곽선 = 같은 계층의 윤곽선자식 / 부모 윤곽선 = 하위 / 상위 계층의 윤곽선윤곽선 (Contour)  그리기윤곽선 검출로 얻은 윤곽점을 이어서 선으로 그림예시 코드 1using Sy..

OpenCV 이미지 검출 (1)

가장 자리(Edge) 검출Edge 검출은 특정 사물 또는 객체의 테두리를 의미전경(Foreground)와 배경(Background)의 경계선즉, 밝기가 큰 폭으로 변경되는 지점가장 자리(Edge) 검출 알고리즘 종류Sobel derivative : 소벨 미분 Scharr filter : 샤를 필터Lapacian : 라플라시안Canny Edge : 캐니 엣지가장 자리를 검출 활용영상처리를 진행하는데 있어 연산량을 압도적으로 줄여줌물체 감지, 차선 감지, 의료 이미지 분석 등에 널리 사용영상 필터링커널(Kernal 또는 Mask, 필터 값이 적용된 2차원 배열)을 이용하여 전체 픽셀에 대해 필터링을 수행소벨 미분 (Sobel derivate)원본 이미지에 대해 가로용, 세로용 커널을 적용 후 두 결과 이미지..

Scalar와 Vector 비교

Vector와 Scalar 비교1. Scalar (스칼라)정의- scalar는 OpenCV에서 4개의 값(R, G, B, A)을 저장할 수 있는 고정 크기 데이터 구조- 주로 색상이나 고정된 겂을 표현 시 사용구조- 형식 : Scalar(double v0, double v1 = 0, double v2 = 0, double v3 = 0)- v0 : 보통 Blue 값 (OpenCV는 기본적으로 BGR 순서를 사용)- v1 : Green- V2: Red- v3 : Alpha (투명도) (옵션)용도1) 색상 지정     ex) 빨간색 선을 그릴 때 Cv2.Line(image, pt1, pt2, new Scalar(0, 0, 255)); // BGR: (0, 0, 255) → 빨간색        2) 이미지 전..

OpenCV 기초 (1)

OpenCV 데이터 종류Vector, 벡터Point, 포인트Scala, 스칼라Size, 사이즈Range, 범위Rect, 직사각형RoatatedRect, 회전 직사각형Mat, 2차원 배열1) VectorVector 구조체2) PointPoint 구조체 3) Scalarscalar 구조체4) SizeSize 구조체5) RangeRange 구조체 6) RectRect 구조체7) RotatedRectRotatedRect 구조체8) MatMat 데이터 클래스Mat 데이터 클래스 - 요소 접근이미지 불러오기이미지 출력하기마우스 콜백1) 콜백 이란?2) Delegate와 Event의 차이점3) 마우스 콜백 (이벤트)이미지 위에 마우스로 그리기MouseEventCallback 사용Event 메소드의 입력 값인 마우스 ..