본문 바로가기

OpenCV13

OpenCV ] 영상의 밝기 조절 + 명암비 조절 + 히스토그램 분석 자세한 설명은 주석처리함 출처 : 책, OpenCV 4 로 배우는 컴퓨터 비전과 머신러닝 영상의 밝기를 100만큼 증가하기 void brightness1(){ Mat img3 = imread("lenna.bmp", IMREAD_COLOR); Mat img4; cvtColor(img3, img4, COLOR_BGR2GRAY);// 컬러 영상으로 변환 Mat src = imread("lenna.bmp", IMREAD_GRAYSCALE); if (src.empty()) { cerr 2022. 8. 23.
OpenCV ] 유용한 함수들. sum(), mean(), minMaxLoc(), normalize(), cvRound() sum() : 주어진 행렬의 전체 원소 합 반환 Scalar sum(InputArray src); mean() : 주어진 행렬의 원소 평균 반환 Scalar mean(InputArray src, InputArray mask = noArray()); 위 두 함수는 4채널 이하의 행렬에 대해서만 동작하고 반환형이 Scalar 타입임. minMaxLoc() : 주어진 행렬의 최소값, 최대값을 찾는 함수로 최소값, 최대값이 있는 좌표 정보도 함께 알아낼 수 있음. 최소값, 최대값을 받을 double 형 변수의 주소와 최소값, 최댓값 위치 좌표를 받을 Point형 변수의 주소를 매개변수로 전달하고 필요 없는 경우 0을 대입 void minMaxLoc(InputArray src, CV_OUT double* minV.. 2022. 8. 18.
OpenCV ] 연산 시간 측정, TickMeter 클래스 또는 getTickCount() 와 getTickFrequency() 함수 사용 TickMeter 클래스 사용 영상 반전에 걸리는 연산 시간을 측정 void time_inverse() { Mat src = imread("lenna.bmp", IMREAD_GRAYSCALE); if (src.empty()) { cerr 2022. 8. 18.
OpenCV ] setTo(), copyTo() 함수와 마스크 연산 OpenCV 일부 함수에서는 ROI 설정을 위한 mask 연산을 지원한다. 보통 마스크 영상으로는 픽셀 값이 0 또는 255 로 구성된 흑백 영상이 사용되고, 인자에 마스크 영상이 주어진 경우 마스크 행렬의 원소가 0이 아닌 위치에서만 연산이 수행된다. 마스크 영상을 이용한 픽셀 값 설정 void mask_setTo() { Mat src = imread("lenna.bmp", IMREAD_COLOR); Mat mask = imread("mask_smile.bmp", IMREAD_GRAYSCALE); if (src.empty() || mask.empty()) { cerr 2022. 8. 18.
OpenCV ] 데이터 파일 입출력 OpenCV에서는 영상 데이터가 아니라 int, float, double 등 일반적인 자료형과 Mat 클래스 객체 등을 XML, YAML, JSON 파일 형식으로 저장하는 기능을 제공하는데 FileStorage 클래스 사용 데이터 파일 저장하기 void writeData() { String name = "Jane"; int age = 10; Point pt1(100, 200); vector Scores = { 80,90,50 }; Mat mat1 = (Mat_(2, 2) 2022. 8. 18.
OpenCV ] 트랙바 (슬라이더 컨트롤) 사용하기 트랙바를 이용하여 그레이스케일 레벨 표현하기 createTrackbar() 함수를 사용하여 트랙바를 생성하고 이 함수의 다섯번째 인자인 onChange에 지정하는 콜백함수가 트랙바의 위치가 변경될 때마다 자동으로 호출됨 트랙바 콜백함수의 형식 typedef void (*TrackbarCallback)(int pos, void* userdata); // 트랙바 콜백함수 // 첫번째 매개변수는 현재 트랙바의 위치 정보, // 두번째 매개변수는 createTrackbar() 함수에서 지정한 사용자 데이터의 포인터 값이 전달됨 void on_level_change(int pos, void* userdata) { Mat img = *(Mat*)userdata; img.setTo(pos * 16);// 0-255를.. 2022. 8. 18.
OpenCV , C++ ] 키보드와 마우스의 이벤트 처리 1. 키보드 이벤트 처리 i 또는 I 키를 누르면 영상의 색상이 반전되는 예제 void keyboard() { Mat img = imread("lenna.bmp"); if (img.empty()) { cerr 2022. 8. 16.
OpenCV , C++ ] 도형 그리기 + 문자열 출력 1. 직선 그리기 void drawLines() { Mat im = imread("lenna.bmp", IMREAD_GRAYSCALE); Mat img; cvtColor(im, img, COLOR_GRAY2BGR); //흑백영상 위에 그리면 원래 도형도 흑백으로 그려짐. 위 코드는 흑백 영상위에 컬러 도형을 그리는 방법 중 하나 //Mat img(400, 400, CV_8UC3, Scalar(255, 255, 255)); //직선 그리기 //void line(InputOutputArray img, Point pt1, Point pt2, const Scalar &color, int thickness = 1, int lineType = 8, int shift = 0) //입출력 영상 InputOutputAr.. 2022. 8. 16.
OpenCV , C++ ] 카메라와 동영상 파일 다루기 예제 코드 출처 : OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 1. 웹캠으로부터 정지 영상 프레임을 두 번 받아와 각기 다른 창에 띄우는 예제 void CaptureVideo() { VideoCapture cap(0); // OpenCV에서는 VideoCapture라는 클래스를 이용해 카메라 또는 동영상 파일로부터 정지 영상 프레임을 받아 올 수 있음 // 동영상 파일을 불러올 때는 "파일 이름" 을 인자로 넣고, 파일이 다른 폴더에 있으면 절대경로 또는 상대경로 추가함 // 카메라 장치를 열 때에는 카메라 장치 id 번호를 정수 값으로 전달. 0으로 해서 안되면 1, 2 시도 if (!cap.isOpened()) {// 예외처리 cerr 2022. 8. 16.
OpenCV ] Image Watch 사용하기 Image Watch : Mat 객체를 영상의 형태로 보여주는 디버깅 툴 Visual Studio 에서 확장 - 확장 관리 - image watch 검색 후 install - Visual Studio 재시작 breakpoint 걸고 디버그 모드 시작 보기 - 다른 창 - Image Watch 확대하여 좌표위치의 픽셀값 확인 가능. 실시간 디버깅 가능. 2022. 8. 9.
OpenCV ] 에서 사용하는 주요 클래스들 (C++) 예제 코드 출처 : OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 유용하게 사용되는 기본 자료형 클래스 Point_ : 2차원 정수 좌표계에서 점의 좌표를 표현하는 클래스는 Point2i 에서 다시 Point로 재정의 됨 Size_ : 사각형 영역의 가로 세로 크기를 나타내는 width와 height 멤버변수를 가지고 있음 Rect_ : 정수형 사각형 정보를 표현하는 Rect2i 는 다시 Rect 로 재정의됨. 정수형 멤버변수 x, y, width, height를 가지고 있으며 Rect rc(10,10,60,40); // (10,10) 좌표부터 그려지는 크기가 60x40인 사각형 RotatedRect : 회전된 사각형을 표현하는 클래스. 회전된 사각형의 중심점 좌표를 나타내는 center(Point2f.. 2022. 8. 9.
OpenCV ] 환경설정 및 프로젝트 만들기 + 재사용을 위한 템플릿 내보내기 (C++) 1. 홈페이지 접속 후 다운로드 https://opencv.org/ 2. 압축 풀기 설치 후 폴더 구조 opencv-build-x64-vc15 폴더 내에 Visual Studio 2017/2019 용 OpenCV DLL파일, 유틸리티와 OpenCV LIB 파일이 있다. 3. 환경설정 내PC 오른쪽 클릭-속성-고급시스템 설정-고급 탭에서 환경변수 클릭 사용자 변수 새로 만들기 변수 이름 : OPENCV_DIR 값 : C:\opencv\build 사용자 변수 - PATH 환경변수 더블클릭 - 새로만들기 %OPENCV_DIR%\x64\vc15\bin 추가 cmd 창을 열어 확인 잘 추가 되었는지 확인 4. Visual Studio 에서 새 프로젝트 만들기 프로젝트 생성 OpenCV 라이브러리는 64비트로 빌드.. 2022. 8. 6.
AI 프로젝트 , 두더지 게임 with Mediapipe and Python Language : PythonLibrary : Mediapipe 이 프로젝트는 웹캠 화면에 나타난 두더지를 잡아 제한시간 내에 점수를 내는 게임입니다.Mediapipe Pose를 통해 인식된 손과 발의 좌표가 랜덤으로 출력되는 두더지 이미지 좌표범위와 일치할때 두더지를 잡을 수 있습니다.    처음 실행 시 화면에 Clap to start a game이라고 표시했다. 사용자가 적당한 거리를 두고 시작할 수 있도록 화면에 빨간 타원을 그리고 원 안에 얼굴을 위치시키라고 안내문을 적었다. 박수를치면 30초가 주어지고 게임 시작.   손(중지)의 좌표가 두더지이미지좌표 범위 안에 들어가면 score++하고 spark이미지를 오버레이한 후 랜덤좌표를 다시 받아서 두더지가 새로운 곳에 나타날 수 있게 한다. 제.. 2022. 4. 24.