#include <Windows.h>
#include <tchar.h>
#include "ECTrainer.h"
#include "SceneCamera.h"
// コンストラクタ
SceneCamera::SceneCamera(ECTrainer* pEct)
:_pEct(pEct)
{
}
// 初期化
bool SceneCamera::Init() {
_SceneCam.open("rtsp://" ADDR ":8554/live/scene");
if (!_SceneCam.isOpened()) {
MessageBox(NULL, _T("cannot open camera " ADDR), NULL, 0);
return false;
}
return true;
}
// ループ
bool SceneCamera::MainLoop() {
while (_pEct->IsRunning()) {
// シーン撮影
cv::Mat scene;
_SceneCam >> scene;
cv::Ptr<cv::aruco::Dictionary> dictionary = cv::aruco::getPredefinedDictionary(cv::aruco::DICT_4X4_50);
std::vector<int> mids;
std::vector<std::vector<cv::Point2f>> corners;
cv::Ptr<cv::aruco::DetectorParameters> parameters = cv::aruco::DetectorParameters::create();
cv::aruco::detectMarkers(scene, dictionary, corners, mids, parameters);
cv::aruco::drawDetectedMarkers(scene, corners, mids);
if (corners.size() > 0) {
cv::putText(scene, "0", cv::Point((int)corners[0][0].x, (int)corners[0][0].y), cv::FONT_HERSHEY_PLAIN, 2.0, CV_RGB(255, 0, 0));
cv::putText(scene, "1", corners[0][1], cv::FONT_HERSHEY_PLAIN, 2.0, CV_RGB(255, 0, 0));
cv::putText(scene, "2", corners[0][2], cv::FONT_HERSHEY_PLAIN, 2.0, CV_RGB(255, 0, 0));
cv::putText(scene, "3", corners[0][3], cv::FONT_HERSHEY_PLAIN, 2.0, CV_RGB(255, 0, 0));
}
_pEct->SetSceneBuffer(scene);
}
return true;
}