2026/05 8

[C++] try-catch 문

안녕하세요! 오늘은 C++ 프로그램의 안정성을 높이는 데 필수적인 예외 처리(Exception Handling) 메커니즘, try-catch 문에 대해 자세히 알아보겠습니다.코드 문법은 완벽하지만, 프로그램을 실행하다 보면 존재하지 않는 파일을 열려고 하거나, 배열의 인덱스를 벗어나거나, 0으로 나누는 등 예상치 못한 상황(Runtime Error)이 발생하곤 합니다. C++에서는 이러한 예외 상황을 어떻게 우아하게 처리하는지 기초부터 실무 팁까지 정리해 보았습니다.1. 예외 처리의 핵심 3요소: try, catch, throwC++ 예외 처리는 크게 세 가지 키워드로 이루어집니다.try: 예외가 발생할 가능성이 있는 코드 블록을 지정합니다.throw: 예외가 발생했음을 알리며, 예외 객체를 던집니다.c..

C++ 2026.05.21

[C++] 가상 함수(virtual)

안녕하세요! 오늘은 C++ 객체 지향 프로그래밍의 핵심이자 다형성을 구현하는 치트키, virtual 키워드에 대해 알아보겠습니다. 면접 단골 질문이기도 하고, 실무에서도 정말 자주 쓰이지만 처음 접하면 헷갈리기 쉬운 개념인데요. 가장 직관적인 예제와 함께 쉽게 풀어보겠습니다. 1. virtual 키워드는 왜 필요할까?한 줄로 요약하면, virtual은 "상황에 따라 유연하게 대처하기 위한 장치"입니다.부모 클래스의 포인터나 참조로 자식 객체를 가리킬 때, virtual이 없다면 프로그램은 실제 객체가 무엇인지 상관하지 않고 '포인터의 타입'만 보고 함수를 실행해 버립니다.백문이 불여일견, 코드로 어떤 문제가 발생하는지 바로 확인해 보시죠. ❌ virtual이 없을 때 발생하는 문제C++#include c..

C++ 2026.05.20

[OpenCV] 이미지 정렬을 위한 ECC 알고리즘 (findTransformECC)

1. 도입: 두 사진을 완벽하게 겹치고 싶을 때우리가 사진을 찍다 보면 미세하게 손이 떨리거나, 각도가 틀어질 때가 있습니다. 만약 이 두 사진을 합쳐서 노이즈를 줄이거나 변화를 관찰해야 한다면 어떻게 해야 할까요? 단순히 위치만 옮기는 것으로는 부족합니다. 미세한 회전과 비틀림까지 잡아내야 하죠. 이때 필요한 것이 바로 OpenCV의 findTransformECC입니다.2. 비유로 이해하기: "투명 종이 겹치기 장인"findTransformECC를 한마디로 정의하면 "투명 종이 겹치기 장인"입니다.상황: 아래에는 고정된 사진(Template)이 있고, 위에는 투명한 종이에 인쇄된 사진(Input)이 있습니다.미션: 위에 있는 투명 종이를 이리저리 움직이고, 돌리고, 살짝 늘려서 아래 사진과 '완벽하게'..

OpenCV 2026.05.15

[Vision - Area Camera #1] '한 장'의 직관적인 취득 방식과 장점

Area Camera에 대해 조금 더 Deep하게 분석하는 시간을 가져보겠습니다. (현업 Vision 개발자 관점에서 보는 시각으로 개인적인 의견이 포함되어 있을 수 있습니다.) Area Camera란 쉽게 말해 "찰칵"하고 찍는 스냅샷으로 생각할 수 있습니다. Area Camera에 대해 장점이라고 생각하는 부분은 "직관적" 이라는 키워드 입니다. Line Scan 같은 방식은 물체의 이동 속도와 카메라의 스캔 속도를 정밀하게 맞춰야만 온전한 이미지를 얻을 수 있습니다 하지만 "Area Camera"는 우리가 스마트폰으로 사진을 찍듯이 셔터를 누르는 순간 눈앞의 정지된 화면 전체를 한 장의 완벽한 프레임으로 얻을 수 있습니다. 촬상 방식을 초보자들도 쉽게 이해할 수 있다는 점입니다. 산업 설비적 관점..

Vision 2026.05.08

[Vision] 머신비전 카메라 완벽 가이드: Area, Line Scan, TDI 방식 차이와 특징

Vision Camera에 대해서 - Camera는 크게 3가지로 나눌 수 있다.Area Camera, Single Line Scan Camera, TDI먼저 가장 이해가 쉬운 Area Camera에 대해서 알아보자1. Area Camera"한 번에 면 전체를 찍는다"Area Camera는 사람 눈으로 사진을 찍는 것과 가장 유사한 방식입니다. 셔터가 열리는 순간, 2D 면 전체를 한 장의 이미지로 동시에 촬영합니다.CCD 구조: 가로 × 세로로 배열된 2D 격자 구조입니다. 예를 들어 500만 화소 카메라라면 2448 × 2048개의 픽셀이 면 전체에 배치되어 있습니다.동작 특성: 물체 전체를 한 프레임으로 취득하기 때문에 직관적이고 구성이 간단합니다. 물체가 정지해 있거나 빠르게 움직이는 순간을 포착..

Vision 2026.05.07

왜 OpenCV는 빠르고, 왜 때로는 SIMD가 더 빠를까?

1. 서론: 왜 우리는 '속도'에 집착하는가?머신비전 현장에서 1ms의 차이가 생산성에 미치는 영향.문제 제기: 복잡해지는 알고리즘(CLAHE, Deep Learning 등)과 고해상도 이미지 사이에서 CPU는 비명을 지르고 있다.→ 이때 구원투수로 등장하는 것이 바로 "SIMD"(Single Instruction Multiple Data)다.2. 비유로 이해하는 SIMD: "나 홀로 요리사 vs 분신술 요리사"SISD (기존 방식): 한 명의 요리사가 손님 한 명의 주문을 받아 달걀 프라이를 하나씩 만드는 과정. (픽셀 하나하나 순차 처리)SIMD (최적화 방식): 요리사가 특수 제작된 커다란 팬을 사용하여, 한 번의 뒤집기 동작으로 8개 혹은 16개의 달걀 프라이를 동시에 만드는 과정."명령은 한 번..

OpenCV 2026.05.06

[C++17] std::visit 완전 정복 - 택배 기사가 뭘 배달하든 처리하는 법

C++ Modern · std::variant · std::visit [C++17] std::visit 완전 정복— 택배 기사가 뭘 배달하든 처리하는 법 C++17의 std::visit을 초보자도 이해할 수 있도록 비유와 코드로 쉽게 설명합니다. 목차 1. std::variant가 뭔지 먼저 알자 — "이상한 택배 상자" 2. std::visit이 필요한 이유 — "상자를 어떻게 열 것인가" 3. std::visit 기본 사용법 — 코드로 보기 4. overloaded 패턴 — 실전에서 쓰는 방법 5. 언제 써야 할까? 정리 들어가기 전에 1. std::variant가 뭔지 먼저 알자 📦 비유..

C++ 2026.05.06

딥러닝 배포 가이드: TensorRT vs OpenVINO 핵심 비교 요약

1. TensorRT (NVIDIA)TensorRT는 NVIDIA GPU에서 딥러닝 추론을 가속화하기 위한 SDK입니다. 모델의 네트워크 구조를 분석하고, 사용 중인 GPU 하드웨어에 맞춰 연산을 최적화하여 실행 파일을 생성합니다.주요 특징:Layer & Tensor Fusion: 중복되는 연산 노드를 하나로 합쳐 메모리 대역폭을 절약합니다.Precision Calibration: FP32 모델을 FP16이나 INT8로 양자화(Quantization)하여 속도를 비약적으로 높입니다.적합한 환경: 서버급 GPU(A100, RTX 시리즈)나 임베디드 보드(Jetson 시리즈) 환경.2. OpenVINO (Intel)OpenVINO(Open Visual Inference and Neural network Op..

Deep Learning 2026.05.04