diff --git a/ECTrainer2/ECTrainerGUI.cpp b/ECTrainer2/ECTrainerGUI.cpp index 19aacc4..fe6ffa7 100644 --- a/ECTrainer2/ECTrainerGUI.cpp +++ b/ECTrainer2/ECTrainerGUI.cpp @@ -14,6 +14,7 @@ // �R���X�g���N�^ ECTrainerGUI::ECTrainerGUI(ECTrainer* pEct) :BaseProcess(pEct) { + _SceneBufferScale = 1.F; } // ������ @@ -73,7 +74,9 @@ // SCENE_BUFFER_SIZE.width, SCENE_BUFFER_SIZE.height, 0xFF0000); cv::Point mp = cvui::mouse(WIN_MAIN); if (cvui::iarea(SCENE_BUFFER_POS.x, SCENE_BUFFER_POS.y, IMAGE_WIDTH, _SceneBufferHeight) == cvui::DOWN) { - _pEct->SetGazeV(cv::Point(mp.x - SCENE_BUFFER_POS.x, mp.y - SCENE_BUFFER_POS.y)); + _pEct->SetGazeV(cv::Point( + (int)((mp.x - SCENE_BUFFER_POS.x) / _SceneBufferScale), + (int)((mp.y - SCENE_BUFFER_POS.y) / _SceneBufferScale))); } else { _pEct->SetGazeV(cv::Point(-1, -1)); } @@ -132,7 +135,7 @@ if ((clock() - startContact) / CLOCKS_PER_SEC >= 3) { PlaySound(_T("../voices/voice1.wav"), NULL, SND_FILENAME | SND_SYNC); fKeepContact = false; - targetSize -= 0.2; + targetSize -= 0.2F; _pEct->Next(); } } @@ -189,7 +192,8 @@ // ����摜�o�b�t�@�ɉ摜��ݒ� void ECTrainerGUI::SetSceneBuffer(cv::Mat& img) { - _SceneBufferHeight = img.rows * IMAGE_WIDTH / img.cols; + _SceneBufferScale = (float)IMAGE_WIDTH / img.cols; + _SceneBufferHeight = (int)(img.rows * _SceneBufferScale); cv::resize(img, _SceneBuffer, cv::Size(IMAGE_WIDTH, _SceneBufferHeight)); } diff --git a/ECTrainer2/ECTrainerGUI.h b/ECTrainer2/ECTrainerGUI.h index fb7f926..1e3add1 100644 --- a/ECTrainer2/ECTrainerGUI.h +++ b/ECTrainer2/ECTrainerGUI.h @@ -24,6 +24,7 @@ cv::Mat _SceneBuffer; // ����摜 cv::Mat _Logo; // ���S int _SceneBufferHeight; + float _SceneBufferScale; int _DispImageHeight; void GetDisplayInfo(); diff --git a/ECTrainer2/Marker.cpp b/ECTrainer2/Marker.cpp index 11400d2..be1343c 100644 --- a/ECTrainer2/Marker.cpp +++ b/ECTrainer2/Marker.cpp @@ -34,6 +34,11 @@ marker.push_back(cv::Point2f( MARGIN.x + itvX * ix, MARGIN.y + itvY * iy + HEIGHT)); _Corners.push_back(marker); + //printf("marker %d : (%f,%f) (%f,%f) (%f,%f) (%f,%f)\n", + // (int)_Corners.size(), marker[0].x, marker[0].y + // , marker[1].x, marker[1].y + // , marker[2].x, marker[2].y + // , marker[3].x, marker[3].y); } } } @@ -72,13 +77,15 @@ // �Ή��_�̗� std::vector cornerW, cornerC; for (int i = 0; i < corners.size(); i++) { - if (mids[i] < corners.size()) { + if (mids[i]-1 < _Corners.size()) { for (int j = 0; j < corners[i].size(); j++) { cornerC.push_back(corners[i][j]); cornerW.push_back(_Corners[mids[i] - 1][j]); } } + //printf("(%f,%f) ", corners[i][0].x, corners[i][0].y); } + //if (corners.size() > 0) printf("\n"); if (cornerC.size() < 4) return false; // �z���O���t�B�s��̎Z�o @@ -94,6 +101,7 @@ double* pgazeIe = gazeIe.ptr(0); float x = (float)(*pgazeIe / *(pgazeIe + 2)); float y = (float)(*(pgazeIe + 1) / *(pgazeIe + 2)); + //std::cout << x << "," << y << std::endl; if (x < 0 || x > 1.F || y < 0 || y > 1.F) return cv::Point2f(-1.F, -1.F); return cv::Point2f(x, y); }