본문 바로가기

IT

OpenCV로 이미지 읽기, 저장, 표시하기 OpenCV를 처음 접하는 사람이라면 이미지 처리 기초에 해당하는이미지를 불러오고, 저장하고, 화면에 표시하는 방법부터 익히는 게 기본입니다. 이미지 읽기: imread()OpenCV에서 이미지를 불러오는 함수는 cv::imread()예요.경로만 정확히 입력하면 간단하게 이미지 파일을 Mat 객체로 로드할 수 있어요.파일이 없거나 잘못된 경로일 경우에는 빈 Mat 객체가 반환되므로, 항상 체크하는 습관이 필요해요.cv::Mat img = cv::imread("sample.jpg"); if (img.empty()) { std::cout return -1; } 옵션으로 cv::IMREAD_COLOR, cv::IMREAD_GRAYSCALE, cv::IMREAD_UNCHANGED 등을 지정할 수.. 더보기
OpenCV의 ROI (Region of Interest) 이해와 사용법 ROI란 무엇인가요?ROI(Region of Interest)는 말 그대로 이미지에서 관심 있는 영역을 지정해서 그 부분만 따로 처리하는 기법이에요. 예를 들어, 이미지 전체에서 사람 얼굴만 잘라내거나, 특정 좌표에 있는 물체만 추적할 때전체 이미지를 대상으로 하는 것보다 ROI만 다루는 게 더 효율적이에요.OpenCV에서는 Mat 객체를 이용해 간단히 ROI를 지정할 수 있어서 처리 속도와 메모리 사용 측면에서 매우 유리합니다. Rect로 ROI 영역 지정하기ROI는 보통 cv::Rect 객체를 이용해 (x, y, width, height) 형식으로 지정해요.이때 x, y는 관심 영역의 시작 좌표이고, width, height는 너비와 높이예요.아래 예제를 보면 쉽게 이해돼요. cv::Mat imag.. 더보기
OpenCV에서 Color Space(BGR ↔ HSV 등) 변환하기 Color Space란 무엇인가요?Color Space(색상 공간)는 색을 수학적으로 표현하는 방법이에요.OpenCV에서는 기본적으로 이미지를 BGR(Blue, Green, Red) 순서로 표현합니다.하지만 색상 기반 작업을 할 때는 HSV(Hue, Saturation, Value)로 변환해서 사용하는 게 일반적이에요. 왜냐하면 HSV는 사람이 인식하는 색상 방식과 비슷하게 동작해서특정 색을 정밀하게 추출하거나 밝기와 색조를 분리해서 처리하는 데 유리하거든요. BGR ↔ HSV 변환 방법OpenCV에서는 cv::cvtColor() 함수를 사용해서 손쉽게 색상 공간을 변환할 수 있어요.가장 많이 쓰이는 건 BGR ↔ HSV 변환이죠. cv::Mat bgr = cv::imread("image.jpg"); .. 더보기
OpenCV Mat 클래스 구조와 메모리 이해 Mat 클래스란 무엇인가요?OpenCV에서 Mat은 이미지 데이터를 저장하는 핵심 클래스예요.말 그대로 ‘매트릭스(Matrix)’의 줄임말로,사진이나 영상은 결국 수많은 픽셀 값들이 모여 있는 2차원 배열이기 때문에 Mat으로 표현할 수 있어요. 단순히 사진뿐만 아니라, 그레이스케일 이미지, 마스크 이미지, 필터 결과까지도 다 Mat 객체에 저장된다고 보면 됩니다. Mat의 구조: 데이터 + 정보Mat 객체는 크게 두 가지로 나눠볼 수 있어요.하나는 픽셀 데이터 자체, 다른 하나는 데이터에 대한 정보(header)예요.이 header에는 이미지의 크기(rows, cols), 채널 수, 데이터 타입(CV_8UC3 등), 참조 횟수(refcount) 같은 정보가 들어 있어요.중요한 점은, OpenCV는 .. 더보기
OpenCV Scalar 클래스 활용법! Scalar 클래스란 무엇인가?OpenCV에서 Scalar 클래스는 이미지의 픽셀 값을 표현하거나 그리기 함수에서 색상을 지정할 때 사용되는 데이터 타입입니다.일반적으로 cv::Scalar(b, g, r) 형태로 사용되며, 각 값은 Blue, Green, Red 순서의 8비트 정수입니다. 즉, RGB가 아닌 BGR 순서로 입력해야 원하는 색상이 출력됩니다.색상뿐만 아니라 마스크나 threshold의 임계값, 픽셀 연산 등 다양한 곳에서 활용됩니다. cv::Scalar white(255, 255, 255); // 흰색 cv::Scalar blue(255, 0, 0); // 파란색 (BGR 순서) Scalar를 사용하는 대표적인 함수들Scalar는 주로 그리기 함수에서 색상 값을 전달할 때 .. 더보기
OpenCV Rect 클래스 완전 정복 Rect 클래스란 무엇인가?OpenCV에서 Rect는 사각형 영역(Region of Interest, ROI)을 정의할 때 사용되는 핵심 클래스입니다.주로 이미지의 특정 영역을 선택하거나 처리할 때 활용되며, (x, y, width, height) 형식으로 구성됩니다. 여기서 (x, y)는 좌상단 꼭짓점의 좌표를 의미하고, width, height는 사각형의 가로, 세로 길이를 나타냅니다.이미지에서 특정 영역을 잘라내거나, 객체를 감싸는 바운딩 박스를 정의할 때 매우 자주 사용됩니다. cv::Rect rect(10, 20, 100, 50); // x=10, y=20, width=100, height=50 주요 생성자와 멤버 변수Rect 객체는 다양한 방식으로 생성이 가능합니다.가장 일반적인 방법은.. 더보기
OpenCV Size_ 클래스 OpenCV 컴퓨터 비전에서 Size_ 클래스를 제공합니다. 영상의 크기나 사각형 평면 영역의 크기를 나타낼 때 사용하는 Size_ 클래스에 대해 알아봅니다. Size_ 클래스는 사각형 크기를 나타내는 템플릿 클래스입니다. 가로길이 width와 세로길이 height를 멤버 변수로 가집니다. Size_ 클래스 선언하기 Size_ 클래스는 다음과 같이 정의되어 있습니다. 초기화 값이 다르게 지정되기 때문에 원하는 case에 맞게 선언하여 사용할 수 있습니다. Size_(); // 초기화 : width=0, height=0 Size_(_Tp _width, _Tp _height); // 초기화 : width=_width, height=_height Size_( const Size_& sz); // 초기화 : x.. 더보기
OpenCV 개발툴 - Visual Studio 2019 OpenCV 라이브러리를 이용하여 OpenCV 프로그램을 개발할 때 Visual Studio를 주로 사용합니다. Visual Studio 2019를 이용하실 때 관련된 방법에 대해 알아보도록 하겠습니다. Visual Studio 2019를 실행해서 구동해 주세요 1. 단계 메뉴에서 파일 > 새로 만들기 > 프로젝트를 선택합니다. 2단계 새 프로젝트 만들기 프로젝트를 선택하면 기존 것을 이용할 것인지 새로 만들 것인지 선택하실 수 있습니다. 새 프로젝트 만들기를 선택합니다. 3단계 Windows 데스크톱 마법사 새 프로젝트 만들기를 선택하면 빈 프로젝트, 콘솔 앱, CMake 프로젝트, Windows 데스크톱 마법사등의 다양한 프로젝트 형식을 선택하실 수 있습니다. Windows 데스크톱 마법사를 선택합니.. 더보기