-
Notifications
You must be signed in to change notification settings - Fork 0
/
BrickStacker.cpp
46 lines (37 loc) · 1.38 KB
/
BrickStacker.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "BrickStacker.h"
BrickStacker::BrickStacker() {
handTemplate = imread("../imageTemplates/handTemplate.png");
if (handTemplate.empty()) {
cout << "ERROR NO hand template" << endl;
}
resize(handTemplate, handTemplateScaled, Size(handTemplate.cols * TURBOSCALE, handTemplate.rows * TURBOSCALE));
}
void BrickStacker::findTemplate(Mat& templ, Point& pos) {
Mat result(screen.rows, screen.cols, CV_32FC1);
matchTemplate(screen, templ, result, TM_CCOEFF_NORMED);
Point resultPos;
double resultDouble;
minMaxLoc(result, nullptr, &resultDouble, nullptr, &resultPos);
pos = resultPos;
}
void BrickStacker::findTemplateTurbo(Mat& templ, Point& pos) {
Mat result(screenScaled.rows, screenScaled.cols, CV_32FC1);
matchTemplate(screenScaled, templ, result, TM_CCOEFF_NORMED);
Point resultPos;
double resultDouble;
minMaxLoc(result, nullptr, &resultDouble, nullptr, &resultPos);
pos = resultPos / TURBOSCALE;
}
void BrickStacker::play() {
WindowsApi::getScreenshot2CVMat(screen);
resize(screen, screenScaled, Size(screen.cols * TURBOSCALE, screen.rows * TURBOSCALE));
if (WindowsApi::isCtrlPressed()) {
WindowsApi::pressSpace();
} else {
WindowsApi::unpressSpace();
}
findTemplateTurbo(handTemplateScaled, handPosition);
}
const Point& BrickStacker::getHandPosition() {
return handPosition;
}