Newer
Older
PrismSoftware / ECTrainer2 / ImageProc.cpp

#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->IsAppRun()) {
		while (_Read == lastRead && _pEct->IsAppRun()) 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;
}