82 lines
1.9 KiB
C++
82 lines
1.9 KiB
C++
|
|
#include "Log.h"
|
|
|
|
#include "screen.h"
|
|
|
|
std::string type2str(int type) {
|
|
std::string r;
|
|
|
|
uchar depth = type & CV_MAT_DEPTH_MASK;
|
|
uchar chans = 1 + (type >> CV_CN_SHIFT);
|
|
|
|
switch ( depth ) {
|
|
case CV_8U: r = "8U"; break;
|
|
case CV_8S: r = "8S"; break;
|
|
case CV_16U: r = "16U"; break;
|
|
case CV_16S: r = "16S"; break;
|
|
case CV_32S: r = "32S"; break;
|
|
case CV_32F: r = "32F"; break;
|
|
case CV_64F: r = "64F"; break;
|
|
default: r = "User"; break;
|
|
}
|
|
|
|
r += "C";
|
|
r += (chans+'0');
|
|
|
|
return r;
|
|
}
|
|
|
|
int main(int argc, const char** argv) {
|
|
Log::init();
|
|
Log::setConsoleLogLevel(Log::Level::TRACE);
|
|
Log::addLogfile("log.txt", Log::Level::TRACE);
|
|
#if __unix__
|
|
Log::setColoredOutput(true);
|
|
#endif
|
|
|
|
Log::info << "Hello, World!";
|
|
|
|
// load template
|
|
cv::Mat tem = cv::imread("imgs/Accept.png", cv::IMREAD_COLOR);
|
|
// cv::imshow("template", tem);
|
|
// cv::waitKey(0);
|
|
|
|
ScreenShot screen;
|
|
|
|
cv::Mat img;
|
|
screen(img);
|
|
// cv::imshow("img", img);
|
|
// cv::waitKey(0);
|
|
|
|
Log::info << "img " << img.type();
|
|
|
|
cv::Mat out;
|
|
int result_cols = img.cols - tem.cols + 1;
|
|
int result_rows = img.rows - tem.rows + 1;
|
|
out.create(result_rows, result_cols, CV_32FC1);
|
|
|
|
Log::info << "tem " << tem.type() << " " << type2str(tem.type());
|
|
// img.convertTo(img, tem.type());
|
|
|
|
cv::cvtColor(img, img, cv::COLOR_RGBA2RGB);
|
|
Log::info << "converted img: " << img.type() << " " << type2str(img.type());
|
|
|
|
cv::matchTemplate(img, tem, out, cv::TM_SQDIFF);
|
|
cv::normalize(out, out, 0, 1, cv::NORM_MINMAX, -1, cv::Mat());
|
|
|
|
double minVal; double maxVal;
|
|
cv::Point minLoc; cv::Point maxLoc; cv::Point matchLoc;
|
|
cv::minMaxLoc( out, &minVal, &maxVal, &minLoc, &maxLoc, cv::Mat() );
|
|
|
|
matchLoc = minLoc;
|
|
cv::rectangle(img, matchLoc, cv::Point( matchLoc.x + tem.cols , matchLoc.y + tem.rows ), cv::Scalar(255, 0, 0, 0), 2);
|
|
|
|
cv::imshow("result", img);
|
|
cv::waitKey(0);
|
|
|
|
time_t t = time(0);
|
|
cv::imwrite("debugimages/" + std::to_string(t) + ".png", img);
|
|
|
|
Log::stop();
|
|
return 0;
|
|
} |