본문 바로가기

프로그래밍206

[C++] C++11에서 추가된 기능 (1) References The C++ Standard Library Contents nullptr and std::nullptr_t auto Uniform Initialization Range-based Loop Move Semantics and Rvalue References New String Literals Keyword noexcept Keyword constexpr C++11부터 유용하고 새로운 기능들이 추가되었는데, references에서 언급하고 있는 C++11 기능들을 이번 포스팅을 통해서 한 번 정리해보고자 합니다. Spaces in Template Expressions std::vector >; // OK in each C++ version std::vector>; // OK since C.. 2022. 12. 3.
[C/C++] 동적 라이브러리 References Advanced C and C++ Compiling Contents Creating the Dynamic Library (about -fPIC flag) Designing Dynamic Libraries Dynamic Linking Modes 지난번 포스팅 정적 라이브러리에 이어서 동적 라이브러리에 대해서 살펴보도록 하겠습니다. Creating the Dynamic Library 컴파일러와 링커는 일반적으로 동적 라이브러리를 빌드하는데 다양한 플래그를 제공합니다. 간단하게 플래그부터 살펴보겠습니다. 리눅스에서 동적 라이브러리르 생성할 때, 일반적으로 최소 아래의 두 플래그를 사용합니다. -fPIC 컴파일러 플래그 -shared 링커 플래그 gcc -fPIC -c first.c seco.. 2022. 11. 16.
[C/C++] 정적 라이브러리 References Advanced C and C++ Compiling Contents Creating Static Libraries Using Static Libraries Tips and Tricks Creating Static Libraries 정적 라이브러리는 컴파일러에 의해 생성된 object file들이 하나로 통합된 archive file입니다. 생성된 object file들을 하나로 통합하는 것은 archiver라는 툴로 수행됩니다. 리눅스에서 archiver tool은 ar 입니다. 이 툴은 GCC toolchain의 일부입니다. 예를 들어, 다음의 간단한 두 줄의 커맨드로 두 개의 소스 파일의 정적 라이브러리를 생성할 수 있습니다. gcc -c first.c second.c ar rcs.. 2022. 11. 11.
[C/C++] Static vs Dynamic 라이브러리 References Advanced C and C++ Compiling Contents Static Libraries Dynamic Libraries [C/C++] 간단한 프로그램 컴파일/링크 과정 [C/C++] 간단한 프로그램 컴파일/링크 과정 References Advaned C and C++ Compiling Contents Program's lifetime Compile Process Link Process 프로그램의 lifetime은 바이너리의 내부 구조에 의해 결정되는데, 바이너리는 OS loader가 load, unpack, 그리고, 그 내용을 실행 junstar92.tistory.com 위 포스트에서 컴파일러와 링커의 작업을 분리하는 이유를 이야기하면서 code reuse principle.. 2022. 11. 8.
[C/C++] Program Execution References Advanced C and C++ Compiling Contents Shell, Kernel, Loader Program Loading Stage Executing Program Entry Point 이번 포스트에서는 프로그램을 실행할 때 발생하는 일련의 과정들에 대해 살펴보도록 하겠습니다. 여기서는 C/C++ 코드로 빌드되어 생성된 executable binary에 대해 설명합니다. 지난 포스트에 빌드된 바이너리가 어떤 식으로 구성되어 있는지 간단하게 살펴봤는데, 필요하시면 참조 바랍니다. [C/C++] 간단한 프로그램 컴파일/링크 과정 [C/C++] 간단한 프로그램 컴파일/링크 과정 References Advaned C and C++ Compiling Contents Program.. 2022. 11. 4.
[C/C++] 간단한 프로그램 컴파일/링크 과정 References Advaned C and C++ Compiling Contents Program's lifetime Compile Process Link Process 프로그램의 lifetime은 바이너리의 내부 구조에 의해 결정되는데, 바이너리는 OS loader가 load, unpack, 그리고, 그 내용을 실행하게 됩니다. 여기서 프로그램이 C/C++로 작성되었을 때, 코드부터 실행까지의 과정을 간단히 살펴보겠습니다. Creating the source code 우선 다음의 3가지 파일을 간단하게 작성하도록 하겠습니다. function.h #pragma once #define FIRST_OPTION #ifdef FIRST_OPTION #define MULTIPLIER (3.0) #else #de.. 2022. 11. 3.
[OpenCV] dnn 모듈 References https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 https://leimao.github.io/blog/Save-Load-Inference-From-TF2-Frozen-Graph/ Contents OpenCV의 DNN 모듈 tensorflow로 학습한 모델을 OpenCV에서 사용하기 dnn 모듈 OpenCV 3.1 버전부터는 딥러닝을 활용할 수 있는 DNN(deep neural network) 모듈을 제공합니다. dnn 모듈은 이미 만들어진 네트워크에서 추론을 위한 용도로 설계되어 있습니다. 즉, 학습은 다른 프레임워크(tensorflow, pytorch 등)에서 진행하고, 학습된 모델을 불러와서 실행할 때에는 dnn 모듈을 사용하는 방식입니.. 2022. 5. 12.
[OpenCV] 서포트 벡터 머신 (SVM) References https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents 서포트 벡터 머신 SVM 클래스 사용 방법 서포트 벡터 머신(SVM, Support Vector Machine)은 기본적으로 두 개의 클래스로 구성된 데이터를 가장 잘 분리하는 초평면(hyperplane)을 찾는 머신러닝 알고리즘입니다. 여기서 초평면은 두 클래스의 데이터를 분리하는 N차원 공간상의 평면을 의미합니다. [ML] Support Vector Machine(SVM) [ML] Support Vector Machine(SVM) - 참고 문헌 및 사이트 핸즈 온 머신러닝 2nd https://en.wikipedia.org/wiki/Support_vector_machine .. 2022. 5. 11.
[OpenCV] 머신러닝과 KNearest 클래스 References https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents OpenCV 머신러닝 클래스 k-최근접 이웃(k-NN) 알고리즘 OpenCV의 머신러닝 클래스 OpenCV는 다양한 머신 러닝 알고리즘을 클래스로 구현하여 제공합니다. 제공되는 클래스들은 주로 ml 모듈에 포함되어 있으며, cv::ml::StatModel 추상 클래스를 상속받아 만들어집니다. StatModel 클래스 이름은 statistical model(통계적 모델)을 의미하며, 이 클래스를 상속받아 만들어진 클래스들의 다이어그램은 위와 같습니다. StatModel 클래스는 머신러닝 알고리즘을 학습시키는 StatModel::train() 멤버 함수와 학습된 모델을 이용하여 테.. 2022. 5. 10.
[OpenCV] 컬러 이미지 처리 References https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents 컬러 이미지의 픽셀 값 참조 색상 공간 변환 색상 채널 나누기 이전까지 포스팅에서는 대부분 그레이스케일 대상의 영상 처리 기법에 대해 살펴봤습니다. 이번 포스팅에서는 컬러 이미지를 처리하는 방법과 다양한 컬러 공간에 대해 살펴보도록 하겠습니다. 컬러 이미지 픽셀 값 참조 OpenCV에서 영상을 불러와 Mat 객체를 생성할 때는 imread() 함수를 사용하는데, 이때 함수의 두 번째 파라미터에 IMREAD_COLOR를 전달하면 영상을 3채널 컬러 영상 타입으로 불러옵니다. 예를 들면 다음과 같습니다. cv::Mat img = cv::imread("butterfly.jpg", c.. 2022. 5. 9.