Gazer 8

[도서 실습] Qt 5 and OpenCV 4 Computer Vision - The Facetious Application 01 (사진 찍기)

안녕하세요.  이번에 챕터에서 진행되는 내용은 실시간으로 얼굴을 인식해서 마스크를 씌우는 프로그램을 만드는 것으로 진행됩니다. 프로그램의 기본 형틀은 앞에서 만든 GazerW를 기반으로 해서 레코딩과 모션 감지 부분을 제거하고 얼굴 인식하는 기능을 넣어서 작동하게 하는 것입니다.  1. 프로그램 틀 만들기 1) 폴더 내 수정   - GazerW 마지막 버전의 프로젝트 폴더를 복사해서 Facetious로 변경합니다. 이 글에서는 첫 번째 하는 것이라. Facetious_day1로 변경하였습니다.   - GazerW.pro 파일을 FacetiousW.pro로 변경합니다. 책 내용에서는 여러 가지를 내용을 수정해주어야 하지만, 폴더와 pro 파일에서는 현재 Windows 버전의 Qt에서는 크게 진행할 내용이 ..

Programming/Qt 2024.04.28

[도서 실습] Qt 5 and OpenCV 4 Computer Vision – The GazerW Application (Motion detection, 움직임 감지)

안녕하세요. 프레임 저장 기능까지 했다면 이제는 영상에서 움직임이 발생하면 감지하고 감지되었을 때 녹화까지 하는 기능을 추가해 보겠습니다. 여기서 감지는 OpenCV에서 제공해 주는 함수로 진행할 예정입니다. 1. 구현 방법 보통 모션 감지는 background와 foreground 이미지를 segmentation(영상 분할) 해서 사용합니다. 그렇기 때문에 우리가 예측할 수 있는 것은 카메라의 background 이미지는 정적일 것이고, 프레임의 변화가 없을 것입니다. 그리고, 연속적인 foreground 프레임을 추출하고 그 속에서 물체들을 찾아내는 방식을 이용합니다. 그러나 이러한 추측은 현실에는 힘들 수 있습니다. 왜냐하면 태양이 뜨고, 지고, 그림자가 나타나는 부분도 감지가 되기 때문입니다. 상..

Programming/Qt 2024.04.24

[도서 실습] Qt5 and OpenCV4 Computer Vision – The GazerW Application (영상 녹화하기, 썸네일)

안녕하세요. 이전 내용은 카메라에 접근하고 정보를 얻고 실제 영상을 재생방법에 대해 알아보았습니다. 이번에는 영상을 어떻게 녹화하는지 확인해 보겠습니다. 단순한 방법으로는 카메라로부터 영상을 캡처하는 동안, 매 프레임을 압축해서 영상파일에 기록하는 것입니다. OpenCV에 포함된 videoio module의 VideoWriter Class에서 이런 간단한 기능을 제공합니다. 1. Utilities Class 파일 생성 파일 저장 경로와 이름을 자동으로 생성될 수 있게 클래스 하나를 만듭니다. 실제 코드 부분만 공유하였고, 해더 파일이나 중복된 부분은 생략했습니다. 부족한 부분은 첨부한 파일을 확인하면 됩니다. - 함수선언을 보면 폴더 경로를 가져오고, 파일 이름 생성하고, 파일 이름에 확장자를 붙여 절대..

Programming/Qt 2024.04.21

[도서 실습] Qt 5 and OpenCV 4 Computer Vision – The GazerW Application (FPS 계산하기)

안녕하세요. FPS라고 하면 게임에서 많이 볼 단어이지만 영상에 처리 많이 사용하는 용어이기도 합니다. 그래서 간단하게 정의를 찾아보고 테스트해 보겠습니다. 1. FPS란 동영상을 물리적으로 환원하면 시간상 연속된 정지 사진들의 모음으로 볼 수 있는데, 이 각각의 정지 사진 하나를 '프레임'이라 부른다. 이런 사진 토막들이 1초에 몇 장 보이느냐, 즉 프레임이 보이는 속도를 가리켜 'Frame Rate', 우리말로 옮기면 프레임률이라 하며, 단위로는 'fps' 혹은 국제 표준인 'Hz'를 쓴다. 간혹 모니터 주사율(refresh rate)과 헷갈리는 일이 있는데, 이는 단위가 같지만 완전히 별개의 개념이다. 모니터 주사율의 단위는 'Hz'로 표기하고, '화면 재생 빈도'라고 하며 모니터가 그래픽 카드에서..

Programming/Qt 2024.04.19

[도서 실습] Qt 5 and OpenCV 4 Computer Vision – The GazerW Application (Thread를 이용한 카메라 영상 출력)

안녕하세요. 이번 내용은 Thread를 이용해서 카메라 영상을 GUI 멈춤 현상 없이 출력하는 것입니다. 단순하게 OpenCV 기능으로 카메라 객체를 불러와서 ESC 키를 누르기 전까지 프레임을 화면에 재생하는 기능을 만들 수도 있습니다. 그러나 그렇게 하면 단순기능은 되지만, GUI 화면이 멈추는(freeze) 현상이 발생합니다. 그래서 GUI가 실행하는 Thread에 재생과 녹화를 소스를 포함하는 것이 아니라, 별도의 스레드(Thread)를 만들어 재생, 녹화하는 것을 동작하게 하는 것입니다. 1. 클래스 생성 - 기존의 GazerW_Day2 소스에서 추가해서 작업을 진행합니다. - GazerW 프로젝트에서 오른쪽 마우스를 클릭해서 "Add New..." 그리고 class 추가를 눌러서 Capture..

Programming/Qt 2024.04.11

[도서 실습] Qt 5 and OpenCV 4 Computer Vision – The Gazer Application 1편 - 화면 생성(완성된 소스 확인)

안녕하세요. Gazer Application을 만들어 보기 전에 기능과 화면 구성에 대해서 이전 내용에서 확인해 보았습니다. 이제는 실제 Qt로 개발하는 것을 진행해 보겠습니다. 우선 이전 내용에서 말한 것처럼 기존 소스가 잘 작동하는 것인지 확인하고 시작하겠습니다. 1. 원본 소스 프로그램 실행 - 몇 가지 내용 수정하고 소스를 컴파일해서 실행 시면 문제없이 카메라 영상을 볼 수 있습니다. 그리고 모션 변화가 있을 때도 감지되는 것을 확인할 수 있습니다. 그래서 책 내용처럼 추가해서 만들어 보도록 하겠습니다. 그러나 원본 소스를 실행하려면 몇 가지 수정 후 실행해야 합니다. 1) 수정해야 할 부분 - 첫 번째로 Gazer.pro 파일에 OpenCV 경로를 지정해 주고 필요한 라이브러리도 함께 입력해주어..

Programming/Qt 2024.03.30

[도서실습] Qt 5 and OpenCV 4 Computer Vision – The Gazer Application 시작 준비하기(영상 프로그램 UI 및 기능)

안녕하세요. 이번 장(Chapter)에서는 이전 ImageEditor 프로그램을 끝내고, 이제 실제 영상에 관련된 프로그램 예제에 들어가게 됩니다. Gazer의 의미는 응시자라고 합니다. 우선, 책의 Gazer Application에서 어떤 내용을 다루고 있는지 확인해 보겠습니다. - Open a webcam and play the video that's been captured from it in real time - Record video from the webcam by clicking on a start/stop button - Show a list of saved videos - Detect motion, save video, and send notifications to our mobile p..

Programming/Qt 2024.03.19

[도서 실습] Qt 5 and OpenCV 4 Computer Vision – The GazerW Application (Qt Library를 이용해서 카메라 영상 출력)

안녕하세요. 이전 내용에서는 OpenCV 라이브러리를 이용해서 카메라 영상을 출력해 보았습니다. 그러나 한 가지 단점이 있는 것은 Qt 프로그램과 함께 OpenCV 라이브러리도 가지고 있어야 하고 실행파일의 용량도 커질 수 있다는 것이었습니다. 만약 단순한 영상 출력 프로그램을 만든다고 한다면 OpenCV를 사용하지 않고 Qt라이브러리를 이용해서 영상을 출력을 해줄 수 있다면 좀 더 가벼운 프로그램으로 만들 수 있을 것으로 생각되어 확인해 보았습니다. 1. 소스 추가 - 아래의 소스 내용은 일부분만 설명되었고 전체 소스는 첨부파일을 참고하시면 됩니다. - 단순하게 Qt Library로 영상을 출력하기 위해서는 기존에 QGraphicSence와 QGraphicsView 오브젝트 대신해서 QCamera와 Q..

Programming/Qt 2024.02.15