안녕하세요.
이제 UI가 만들어졌다면 간단하게 컴퓨터에 장착되어 있는 카메라 정보를 가져오도록 기능을 추가해 보겠습니다.
1. 구현할 내용
Qt library에 포함되어 있는 QCameraInfo 클래스를 사용해서 현재 컴퓨터에 사용 가능한 카메라의 정보를 확인하는 것입니다.
2. 기능 구현
메뉴의 "Camera Information" 기능을 실행되게 하려면 slot를 만들어 연결시켜 주고 구현도 해주어야 합니다.
1) mainwindow.h 추가 내용
필요한 라이브러리 헤더 파일과 private slots 영역을 만들어 함수를 선언합니다.
#include <QCameraInfo>
#include <QMessageBox>
...
private slots:
void showCameraInfo();
2) GazerW.pro 추가 내용
#include <QCameraInfo>만 추가해서는 QCameraInfo 파일이 없다고 에러가 발생합니다. 이유는 .pro에 필요한 라이브러리 포함된 라이브러리를 추가해주어야 합니다. GazerW.pro파일에 multimedia를 추가해 줍니다.
QT += core gui multimedia
3) mainwindow.cpp 추가 내용
카메라가 여러 개가 있을 수 있으므로 foreach로 루프를 돌아서 메시지 박스에 카메라 정보를 표시해 줍니다.
void MainWindow::showCameraInfo()
{
QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
QString info = QString("Available Cameras: \n");
foreach (const QCameraInfo &cameraInfo, cameras) {
info += " - " + cameraInfo.deviceName() + ": ";
info += cameraInfo.description() + "\n";
}
QMessageBox::information(this, "Cameras", info);
}
마지막으로 메뉴 클릭 이벤트와 slot함수를 createActions() 함수에서 구현해 줍니다.
connect(cameraInfoAction, SIGNAL(triggered(bool)), this, SLOT(showCameraInfo()));
3. 실행 결과
개발환경은 노트북인데 장착되어 있는 WEB Camera하나와 추가로 USB 카메라를 추가했는데 두 개다 문제없이 나타났습니다. 나중에 어떤 카메라를 가지고 사용할지 선택해서 구현을 하시면 됩니다.
리눅스 상에서는 /dev/video0 ... 으로 해서 장치 드라이버가 나타날 것입니다.
감사합니다.
<참고자료>
1. [BOOK] Qt-5-and-OpenCV-4-Computer-Vision-Projects
2. Qt-5-and-OpenCV-4-Computer-Vision-Projects