Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++를 사용하여 OpenCV에서 이미지를 로드하고 표시하는 방법은 무엇입니까?

<시간/>

이 주제에서는 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;
}

위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다. -

출력

C++를 사용하여 OpenCV에서 이미지를 로드하고 표시하는 방법은 무엇입니까?