분류 전체보기 108

[OpenCV] String 클래스

많은 프로그램에서 그렇듯 OpenCV에서도 문자열을 다루는 경우가 많다. OpenCV 에서는 영상 출력 창에 고유의 문자열을 지정하여 구분하고, 영상에 문자열을 출력하는 기능을 제공한다. C++ 표준 라이브러리(STL) 에서 std::string 클래스와 같이 OpenCV 에서는 cv::String 클래스를 사용하여 문자열을 저장하고 차리할 수 있다. ​ OpenCV 4.0 버전 이전에 자체적인 String 클래스를 정의하여 사용하였다. 그러닥 OpenCV 4.0 버전부터 자체적인 String 클래스 정의를 삭제하고 대신 C++ 표준 라이브러리의 std::string 클래스를 String 클래스로 이름 재정의하여 사용한다. 실제로 OpenCV 헤더 파일에는 다음과 같이 typedef로 재정의 코드가 들어..

[OpenCV] Range 클래스

Range 클래스란 범위 또는 구간을 표현하는 클래스이다. Range 클래스는 start 와 end를 멤버 변수로 갖는다. start : 범위의 시작 end : 범위의 끝 class Range { public: Range(); // 기본 생성자로 start와 end를 0으로 초기화 Range(int _start, int _end); // 두 개의 정수를 인자로 받는 생성자로 start = _start, end = _end로 초기화 int size() const; // Range::size() 멤버 함수는 범위 크기(end - start) 반환 bool empty() const; // Range::empty() 멤버 함수는 start와 end가 같으면 true 반환 static Range all(); //..

[OpenCV] RotatedRect 클래스

RotatedRect 클래스란 회전된 사각형을 표현하는 클래스이다. 멤버변수로 center, size, angle을 가진다. center : 회전된 사각형의 중심 좌표를 나타냄 size : 사각형의 가로 및 세로 크기를 나타냄 angle : 회전 각도 정보를 나타냄 class RotatedRect { public: RotatedRect(); // 기본 생성자로 모든 멤버 변수를 0으로 초기화 RotatedRect(const Point2f& _center, const Size2f& _size, float _angle); // (_center, _size, _angle)을 인자로 받는 생성자로 center = _center, size = _size, angle = _angle 으로 초기화 RotatedRec..

[OpenCV] Rect_ 클래스

Rect_ 클래스 사각형의 위치와 크기 정보를 표현할 때 사용한다. 사각형의 좌측 상단 점의 좌표를 나타내는 x, y 멤버 변수와 사각형의 가로 및 세로 크기를 나타내는 width, height 멤버 변수를 가지고 있다. template class Rect_ { public: Rect_(); // 기본 생성자로 모든 멤버 변수를 0으로 초기화 Rect_(_Tp _x, _Tp _y, _Tp _width, _Tp _height); // (_x, _y, _width, _height) 사각형 정보를 인자로 받는 생성자로 x = _x, y = _y, width = _width, height + _height 로 초기화 Rect_(const Recdt_& r); // 복사 생성자로 x = r.x, y = r.y, ..

[OpenCV] Size_ 클래스

Size_ 클래스는 영상 또는 사각형 영역의 크기를 표현할 때 사용한다. Size_ 클래스는 사각형 영역의 가로와 세로 크기를 나타내는 width, height 멤버 변수를 가지고 있다. template class Size_ { public: Size_(); // 기본 생성자로 width, height를 0으로 초기화 Size_(_Tp _width, _Tp _height); // (_width, _height) 크기를 인자로 받는 생성자로 width = _width, height = _height로 초기화 Size_(const Size_& sz); // 복사 생성자로 width = sz.width, height = sz.height로 초기화 Size_& operator = (const Size_& sz)..

[OpenCV] Point_ 클래스

Point_클래스 2차원 평면 위에 있는 점의 좌표를 표현하는 템플릿이다. 2차원 좌표를 나타내는 x와 y라는 이름의 멤버 변수를 가지고 있다. template class Point_ { public: Point_(); // Point 의 기본 생성자로 x = 0, y = 0으로 초기화 Point_(_Tp _x, _Tp _y); // (_x, _y) 좌표를 인자로 받는 생성자로, x = _x, y = _y로 초기화 Point_(const Point_& pt); // 복사 생성자로, x - pt.x, y = pt.y 로 초기화 Point_& operator = (const Point_& pt); // 대입 연산자 재정의 _Tp dot(const Point_& pt) const; // Point::dot()..

[OpenCV] Visual Studio - OpenCV 환경 설정

Visual Studio에서 OpenCV를 사용하기 위해서 Debug와 Release 항목은 각각의 설정을 해주어야 한다. ​ 설정은 디버그와 릴리즈 항목 동일하지만, 추가 종속성 항목에서만 다르다. 릴리즈 항목을 설정하기 위해서 프로젝트 속성 - 구성 항목을 릴리즈로 변경하면 된다. ​ 아래 코드는 설치되어 있는 OpenCV 버전을 확인하는 코드이다. 해당 코드를 빌드하면 오류가 발생한다. #include "opencv2/opencv.hpp" #include int main() { std::cout > 추가 포함 디렉터리에서 우측 화살표 >> 클릭 ​ ​ 우측 메뉴 4개 중 좌측 메뉴(줄 추가) 클릭 후 $(OPENCV_DIR)\include 입력 $(OPENCV_DIR)\include는 C:\open..

[OpenCV] 주요 모듈

OpenCV 모듈 OpenCV 라이브러리는 다수의 모듈(module)로 구성되어 있다. 모듈은 OpenCV에서 제공하는 다양한 클래스와 함수를 그 기능과 성격에 따라 모아서 만들어놓은 OpenCV의 부분 라이브러리다. 예를 들어 OpenCV의 핵심 클래스와 함수는 core 모듈에 들어 있고, 영상 출력 기능은 highgui 모듈에 포함되어 있다. OpenCV는 다수의 모듈 라이브러리가 모여서 만들어진 것이다. 모듈 이름 설명 calib3d 카메라 캘리브레이션과 3차원 재구성 core 행렬, 벡터 등 OpenCV 핵심 클래스와 연산 함수 dnn 심층 신경망 기능 features2d 2차원 특징 추출과 특징 벡터 기술, 매칭 방법 flann 다차원 공간에서 빠른 최근방 이웃 검색 highgui 영상의 화면 ..

[OpenCV] OpenCV란

OpenCV(Open source Computer Vision) OpenCV란 인텔에서 개발한 이미지 처리를 위한 라이브러리로, 주로 실시간 이미지 처리를 위해서 사용된다. ​ OpenCV는 1999년 인텔의 개리 브래드스키(Gary Bradsky)가 개발을 시작하여 2000년에 처음 공개된 C/C++ 기반의 영상 처리 전용 라이브러리이다. 파이썬, C#등 다양한 언어를 지원하고 있다. ​ OpenCV를 사용하면 쉽게 영상 처리를 할 수 있고, 다양한 영상 처리 알고리즘을 지원하며, 카메라와 같은 장치를 통한 영상 입력 기능들도 제공하고 있다. ​ 영상 처리, 패턴 인식, 컴퓨터 비전 알고리즘을 구현한 풍부한 함수를 제공하며, 영상의 인식과 처리, 색상 공간의 변환, 필터링, DTF 및 FET, 주파수 ..

[Embedded] 부트 로더(Boot loader)

부트로더란(boot loader) 부트로더란 장치에 생명을 불어넣고 부트 절차를 시작하는 것이다. 즉, 부트로더는 시스템을 시작시키고 운영체제 커널을 로드하는 것이다. ​ 부트로더가 하는 일 임베디드 리눅스 시스템에서 부트로더는 시스템을 기본 수준(basic level)으로 초기화하고 커널을 로드하는 2가지의 주요 작업을 수행한다. 전원을 켜거나 부트로더 코드의 첫 줄이 실행되면 시스템은 아주 최소 상태에 있다. 이때 DRAM 컨트롤러가 시작하지 않았기 때문에 주 메모리에는 접근할 수 없다. 마찬가지로 다른 인터페이스도 구성되지 않았기 때문에 NAND 플래시 컨트롤러, MMC 컨트롤러 등을 통해 접근하는 저장소도 사용할 수 없다. ​ 결과적으로 시스템 부트스트랩은 몇 단계의 코드로 이루어지며, 각각의 시..

Embedded/이론 2022.11.15