#include "ECTrainer.h"
#include "ImageProc.h"
#include "Marker.h"
// コンストラクタ
ImageProc::ImageProc(ECTrainer* pEct, Marker* pMarker)
:BaseProcess(pEct), _pMarker(pMarker), _Write(0), _Read(1) {
}
// ループ
bool ImageProc::MainLoop() {
int lastRead = _Read;
while (_pEct->IsRunning()) {
while (_Read == lastRead && _pEct->IsRunning()) Sleep(1);
cv::Mat img = _Frames[_Read].clone();
lastRead = _Read;
bool hOK = _pMarker->Detect(img);
_pEct->SetHomographyStatus(hOK);
_pEct->SetSceneBuffer(img);
}
return true;
}
// 画像受信
void ImageProc::SetImage(cv::Mat& img) {
img.copyTo(_Frames[_Write]);
_Read = _Write;
_Write = (_Write + 1) % FRAMES;
}