이 주제에서는 C++에서 OpenCV를 사용하여 이미지를 로드하고 표시하는 방법을 결정할 것입니다. OpenCV에서 이미지를 불러와 보여주기 위해 필요한 기능은 다음과 같습니다.
- 매트: 매트는 함수가 아닙니다. 변수의 일종인 자료구조입니다. C++의 int, char, string 변수 유형과 마찬가지로 Mat는 내부에 이미지를 로드하기 위해 행렬 데이터 구조를 생성하는 OpenCV의 변수입니다. 이 프로그램에서 우리는 'Mat myImage;'를 작성했습니다. 이는 'myImage'라는 행렬 변수를 선언한다는 의미입니다.
- namedWindow(): 메모리를 할당하고 이미지를 표시하는 창을 만듭니다. 포토 프레임처럼 작동합니다. OpenCV에서는 함수를 'namedWindow("name of the window",flag)'로 만들어야 합니다.
- 3 . imread(): 이 기능은 정의된 위치에서 이미지를 읽습니다. 이 프로그램은 'C:' 드라이브에서 이미지를 읽습니다. 이 기능을 사용하기 위해서는 'imread("이미지 위치/이미지 이름 확장자", 플래그)'로 작성해야 합니다.
- imshow(): 이 기능은 정의된 창에 이미지를 표시합니다. 이 기능을 사용하려면 'imshow(name of the window", name of the matrix)'로 작성해야 합니다.
- waitKey(): 이것은 OpenCV의 중요한 기능입니다. 이미지를 처리하고 작업을 실행하려면 시스템에 일정 시간을 허용해야 합니다. 하지 않으면 하지 않습니다
이 함수는 프로그램을 닫기 전에 일정 시간 동안 기다립니다. waitKey(10000)를 사용하면 10초 후에 프로그램이 종료됩니다. waitKey(0)를 작성하면 원하는 출력을 얻을 수 있습니다. 이 기능을 사용하면 시스템이 작동하는 데 필요한 시간을 줄 수 있습니다. 사용자의 키 입력을 기다립니다. 사용자가 키보드에서 아무 키나 클릭하면 프로그램이 중지됩니다. 이 함수는 'waitKey(milliseconds)'로 작성해야 합니다.
- destroyWindows(): 이 기능은 모든 창을 닫습니다. 창을 만들 때 메모리를 할당합니다. destroyWindow() 함수는 해당 메모리를 시스템에 해제합니다.
다음 프로그램은 OpenCV 라이브러리를 사용하여 이미지를 로드하고 표시하는 방법을 보여줍니다.
예
#include<iostream> #include<opencv2/highgui/highgui.hpp> using namespace cv; using namespace std; int main() { Mat myImage;//declaring a matrix named myImage// namedWindow("PhotoFrame");//declaring the window to show the image// myImage = imread("lakshmi.jpg");//loading the image named lakshme in the matrix// if (myImage.empty()) {//If the image is not loaded, show an error message// cout << "Couldn't load the image." << endl; system("pause");//pause the system and wait for users to press any key// return-1; } imshow("PhotoFrame", myImage);//display the image which is stored in the 'myImage' in the "myWindow" window// destroyWindow("Photoframe");//close the window and release allocate memory// waitKey(0);//wait till user press any key return 0; }
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다. -
출력