Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++

  1. C++와 OpenCV로 동영상의 총 프레임 수 구하는 방법

    이번 글에서는 OpenCV를 사용하여 동영상의 총 프레임 수를 계산하는 방법을 알아보겠습니다. OpenCV를 활용하면 동영상의 전체 프레임 수를 손쉽게 세고 화면에 표시할 수 있습니다.다만 한 가지 주의해야 할 점이 있습니다. 실시간 영상(카메라 스트리밍)의 프레임 수는 계산할 수 없다는 것입니다. 실시간 영상은 종료 시점이 정해져 있지 않아 특정한 프레임 개수가 존재하지 않기 때문입니다. 따라서 이 방법은 MP4처럼 이미 저장된 동영상 파일에만 적용할 수 있습니다.아래 예제 코드는 동영상 파일의 총 프레임 수를 계산하여 콘솔 창에

  2. C++ OpenCV로 현재 프레임 위치 확인하는 방법

    현재 프레임(Current Frame)이란 동영상을 재생하는 도중 화면에 표시되고 있는 바로 그 순간의 프레임을 의미합니다. 흔히 활성 프레임(Active Frame)이라고도 부르며, 영상 처리 애플리케이션 개발 시 특정 지점의 프레임 번호를 파악해야 하는 경우가 자주 발생합니다.OpenCV에서는 VideoCapture 클래스가 제공하는 get() 함수와 CAP_PROP_POS_FRAMES 속성을 사용하면 현재 프레임의 위치(번호)를 손쉽게 조회할 수 있습니다.예제 코드아래 프로그램은 video.mp4 파일을 재생하면서 매 프레임마

  3. C++와 OpenCV를 활용한 동영상 경과 시간 계산 방법

    이 글에서는 OpenCV 라이브러리를 사용하여 동영상의 경과 시간(elapsed time)을 계산하는 방법을 알아보겠습니다. 동영상 재생 중 현재까지 지나간 시간을 실시간으로 확인하는 것은 영상 분석, 디버깅, 타임스탬프 기록 등 다양한 작업에 유용하게 활용됩니다.아래 예제 프로그램은 C++과 OpenCV의 VideoCapture 클래스를 활용하여 동영상을 재생하면서 콘솔 창에 경과 시간을 출력합니다.예제 코드#include<opencv2/opencv.hpp>//OpenCV header to use VideoCapture

  4. C++ OpenCV에서 FPS 값 구하는 방법

    OpenCV에서 동영상의 FPS(초당 프레임 수) 값을 확인하려면 VideoCapture 클래스의 get() 함수에 CAP_PROP_FPS 속성을 인자로 전달하면 됩니다. 이 함수는 해당 동영상의 FPS 값을 숫자 형태로 반환합니다. FPS 값을 얻는 기본 원리 프로그램 시작 부분에서 FPS 값을 저장할 정수형 변수(예: FPS)를 먼저 선언합니다. 그다음 FPS = cap.get(CAP_PROP_FPS); 코드를 실행하면 동영상의 FPS 값이 해당 변수에 저장됩니다. 아래 예제 프로그램은 지정된 동영상 파일의 FPS를 읽어와

  5. C++로 OpenCV에 트랙바(Trackbar)를 추가하는 방법

    트랙바(Trackbar)는 OpenCV에서 이미지의 밝기, 대비 등 다양한 파라미터를 손쉽게 조절할 수 있도록 도와주는 슬라이더 형태의 GUI 컨트롤입니다. 일반적으로 파라미터를 변경하려면 코드를 수정한 뒤 다시 컴파일해야 하지만, 트랙바를 활용하면 마우스만으로 값을 실시간으로 조정할 수 있습니다. 덕분에 정적인 이미지 처리를 넘어 동적인 시각 효과를 손쉽게 구현할 수 있다는 큰 장점이 있습니다.다음 예제 프로그램은 C++을 사용하여 OpenCV에 트랙바를 추가하는 방법을 보여줍니다.예제 코드#include<iostream&g

  6. C++와 OpenCV로 이미지 회전하기: 트랙바를 활용한 실시간 회전 구현

    OpenCV의 내장 함수를 활용하면 이미지를 손쉽게 회전할 수 있습니다. 이미지를 회전하려면 highgui.hpp와 imgproc.hpp 헤더 파일을 먼저 포함해야 하며, 이 글에서는 이미지 회전에 필요한 핵심 함수들을 하나씩 살펴보겠습니다.주요 함수 소개이미지 회전에 사용되는 핵심 함수는 다음과 같습니다.getRotationMatrix2D(): 회전 중심점, 회전 각도, 배율(scale)을 인자로 받아 2D 회전을 위한 아핀 변환 행렬(affine transformation matrix)을 생성합니다.warpAffine(): 앞서

  7. C++와 OpenCV를 활용해 이미지 크기를 조절하고 테두리를 추가하는 방법

    이 글에서는 트랙바(trackbar)의 또 다른 활용 사례를 살펴보겠습니다. 트랙바를 이용해 이미지의 크기를 자유롭게 변경하고, 이미지에 테두리를 추가한 뒤, 같은 트랙바로 테두리의 두께까지 실시간으로 조절하는 방법을 다룹니다. 아래 프로그램을 사용하면 이미지 크기 변경, 테두리 추가, 테두리 두께 조절은 물론 이미지 회전까지 한 번에 처리할 수 있습니다. 전체적인 구조는 이전 예제와 비슷하지만, 하나의 창에 여러 개의 슬라이더를 함께 배치한다는 점이 핵심입니다. 예제 코드 #include<iostream> #inclu

  8. C++와 OpenCV로 비디오 회전하기: 단계별 완벽 가이드

    비디오 회전의 기본 개념 비디오를 회전하는 작업은 이미지를 회전하는 것과 원리가 거의 동일합니다. 유일한 차이점은 정지된 이미지 하나를 행렬에 불러오는 대신, 비디오 파일을 읽어들이거나 카메라에서 실시간으로 전송되는 비디오 스트림을 받아 처리한다는 점입니다. 이번 예제에서는 비디오 파일을 따로 로드하지 않고 기본 카메라로부터 영상을 입력받습니다. 만약 저장된 비디오 파일을 사용하고 싶다면 VideoCapture 객체에 해당 파일의 경로를 정확하게 지정해 주기만 하면 됩니다. 핵심 함수 살펴보기 getRotationMatrix2D()

  9. C++ OpenCV 마우스 이벤트 처리 방법 총정리

    마우스 이벤트(Mouse Events)는 OpenCV가 제공하는 가장 유용한 기능 중 하나입니다. OpenCV를 활용하면 화면상의 마우스 포인터 위치를 실시간으로 추적할 수 있을 뿐만 아니라, 좌클릭·우클릭·휠클릭(중간 버튼 클릭)과 같은 다양한 클릭 동작도 감지할 수 있습니다.OpenCV는 로보틱스와 컴퓨터 비전 분야에서 폭넓게 활용되고 있으며, 특히 로봇 제어나 영상 기반 인터랙션 시스템에서는 마우스 포인터의 위치와 클릭 정보를 추적하는 기능이 매우 자주 사용됩니다.이번 글에서는 이미지 위에서 마우스 포인터의 위치를 추적하고,

  10. C++와 OpenCV로 특정 색상 감지하기: HSV 트랙바 기반 실시간 색상 검출 방법

    C++ OpenCV 색상 감지 개요 이 글에서는 C++와 OpenCV 라이브러리를 활용해 특정 색상을 실시간으로 감지하고, 감지된 색상을 기준으로 객체를 추적하는 방법을 단계별로 알아봅니다. 다만 색상 감지 및 색상 기반 추적 시스템의 성능은 환경에 크게 의존한다는 점을 유의해야 합니다. 방의 조명을 바꾸거나 배경색을 변경하면 감지 결과에 상당한 영향이 생길 수 있습니다. HSV 색 공간을 사용하는 이유 일반적인 BGR 형식은 빛의 밝기 변화에 민감하지만, HSV(Hue·Saturation·Value) 색 공간은 색상(Hue)

  11. C++와 OpenCV를 활용한 실시간 색상 추적 구현 방법

    색상 추적(Color Tracking)은 색상 감지(Color Detection)와 매우 유사한 기술입니다. 두 기술의 차이점은 추적에는 객체의 위치 정보가 추가로 필요하다는 점입니다. 즉, 감지된 객체의 면적을 계산하고 해당 영역의 현재 좌표를 지속적으로 파악한 뒤, OpenCV의 line() 함수를 사용해 객체가 움직인 경로를 화면에 시각적으로 표시하게 됩니다.이 글에서는 C++과 OpenCV를 사용하여 실시간 카메라 영상에서 특정 색상을 추적하는 전체 과정을 예제 코드와 함께 살펴봅니다.핵심 동작 원리예제 코드를 살펴보기 전에

  12. C++와 OpenCV로 정지 이미지에서 얼굴 검출하는 방법 – detectMultiScale() 함수 완벽 가이드

    OpenCV를 활용하면 정지 이미지(사진) 속에서 사람의 얼굴을 쉽게 검출할 수 있습니다. 얼굴 검출을 위해서는 detectMultiScale() 함수를 사용합니다. 이 함수는 Haar Cascade 분류기와 함께 동작하여 이미지 내의 얼굴 영역을 찾아냅니다.dectectMultiScale() 함수 기본 문법detectMultiScale(source matrix, vector, searchScaleFactor, minNeighbours, flags, minfeatureSize)함수의 인자(argument) 값을 조절하면 검출 성능과

  13. C++와 OpenCV로 이미지 속 얼굴 개수 세는 방법

    이미지 속 얼굴 개수 세기OpenCV를 사용하면 이미지에 포함된 얼굴의 개수를 아주 쉽게 셀 수 있습니다. 사실 이전 단계에서 작성한 얼굴 검출 프로그램에는 이미 그 정보가 들어 있습니다. 바로 faces.size()라는 코드인데, 이 코드는 검출된 얼굴의 개수를 정수(integer) 값으로 반환합니다.예를 들어 다음과 같이 작성하면:int x = faces.size();변수 x에는 이미지에서 감지된 얼굴의 개수가 저장됩니다. 즉, 별도의 복잡한 연산 없이 벡터의 크기를 확인하는 것만으로 얼굴 개수를 알아낼 수 있는 것입니다.아래

  14. C++와 OpenCV로 감지된 얼굴 영역을 자르는 방법 완벽 가이드

    이 글에서는 OpenCV에서 감지된 얼굴을 잘라내는(crop) 방법을 알아봅니다. 얼굴 영역을 잘라내려면 여러 개의 행렬(Mat)이 필요한데, 가장 효율적인 방법은 이미지 배열을 활용하는 것입니다. 필요한 행렬 선언하기 이 프로그램에서는 다음 두 줄의 코드로 두 개의 이미지 행렬 배열을 선언합니다. Mat cropped_faces[3]; Mat faceROI[3]; 첫 번째 배열인 cropped_faces는 잘라낸 얼굴 이미지를 저장하는 용도이며, 두 번째 배열인 faceROI는 관심 영역(Region of Interest, R

  15. C++와 OpenCV로 이미지에서 가장 큰 얼굴만 감지하는 방법

    개요 이 튜토리얼에서는 OpenCV를 사용해 이미지 속 여러 얼굴 중 가장 큰 얼굴 하나만 검출하는 방법을 알아봅니다. 기본적인 얼굴 검출 절차는 이전 튜토리얼과 동일하지만, 여기서는 추가로 Rect 구조체와 for 반복문을 활용해 화면에서 가장 큰 얼굴 영역을 찾아낸다는 점이 다릅니다. 핵심 함수 형식 Mat faceROI = image_with_humanface(maxRect) maxRect에는 이미지에서 발견된 가장 큰 얼굴의 위치와 크기(면적) 정보가 담겨 있습니다. 위 한 줄의 코드는 원본 이미지에서 maxRect에 저장

  16. C++와 OpenCV를 활용한 얼굴 위치 추적 방법

    왜 사각형 대신 타원(Ellipse)을 사용해야 할까?얼굴의 위치를 추적할 때는 얼굴을 사각형이 아닌 타원으로 감싸는 것이 더 효과적입니다. 그 이유는 타원에는 명확한 중심점(center)이 존재하기 때문입니다. 이 중심점은 곧 검출된 얼굴의 중심 좌표가 되며, 덕분에 얼굴의 위치를 훨씬 더 정확하게 추적할 수 있습니다.반면 사각형 바운딩 박스는 모서리를 기준으로 정보를 다루게 되어 중심 좌표를 별도로 계산해야 하는 번거로움이 있습니다. 타원을 사용하면 이 과정이 자연스럽게 단순해집니다.아래 예제 프로그램은 검출된 얼굴의 중심 좌표

  17. C++와 OpenCV로 웹캠 영상에서 실시간 얼굴 검출하는 방법

    실시간 얼굴 검출(real-time face detection)은 정지 이미지에서 얼굴을 찾는 방식과 기본 원리가 같습니다. 결정적인 차이점은 실시간 검출에서는 컴퓨터에 연결된 카메라로부터 비디오 스트림을 계속해서 입력받아야 한다는 점입니다. 이 프로그램에서는 VideoCapture() 함수를 사용하는데, 이 함수는 카메라로부터 영상을 캡처하여 프레임 단위로 임시 행렬(Matrix)에 저장합니다. 여기서는 기본 웹캠(0번 카메라)으로부터 영상을 받아 프레임을 video_stream 행렬에 담습니다. 다음 프로그램은 사람의 얼굴을

  18. C++와 OpenCV로 실시간 얼굴 추적 구현하기

    개요이번 튜토리얼에서는 OpenCV를 활용해 웹캠 영상에서 실시간으로 얼굴을 추적하는 방법을 알아보겠습니다. 이전에 다룬 얼굴 검출 프로그램과 전반적인 구조는 동일하지만, 두 가지 차이점이 있습니다.얼굴 영역을 표시할 때 사각형(rectangle) 대신 타원(ellipse)을 사용합니다.cout 문을 추가하여 감지된 얼굴의 중심 좌표를 콘솔 창에 출력합니다.예제 코드다음은 카메라 영상에서 사람의 얼굴을 실시간으로 감지하고 추적하는 완전한 C++ 프로그램입니다.#include<iostream>#include<openc

  19. C++와 OpenCV로 눈 검출하기: Haar Cascade 분류기 실전 가이드

    이 글에서는 OpenCV를 이용해 영상 속에서 눈을 검출하는 방법을 알아보겠습니다. 눈 검출에는 C:/opencv/sources/data/haarcascades 경로에 포함된 haarcascade_eye.xml 분류기를 사용하며, 얼굴 검출에는 haarcascade_frontalface_alt.xml 분류기를 함께 활용합니다. 먼저 프로그램에 반드시 포함해야 할 헤더 파일들을 살펴보겠습니다. 필수 헤더 파일 <iostream> : C++ 프로그래밍 언어의 표준 입출력 헤더입니다. highgui : 이미지 읽기·쓰기 및

  20. C++와 OpenCV로 눈 추적하기: 실시간 눈 좌표 추적 완벽 가이드

    이 글에서는 OpenCV를 활용해 눈을 추적하는 방법을 알아봅니다. Haar Cascade 분류기로 눈을 먼저 검출했다면, 그 이후의 추적 작업은 생각보다 훨씬 간단합니다. 이 예제에서는 검출된 눈을 원(circle)으로 감싸서 표시하며, 원의 중심 좌표를 추적하는 것이 곧 눈의 중심을 추적하는 것과 같습니다. 눈 추적의 핵심 원리 원의 중심을 추적하려면 두 개의 정수형 변수가 필요합니다. 아래 코드에서는 main() 함수의 첫 두 줄(9번째, 10번째 줄)에서 x_axis와 y_axis라는 이름의 변수를 선언하여 이를 준비합니다

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:258/300  20-컴퓨터/Page Goto:1 252 253 254 255 256 257 258 259 260 261 262 263 264