From 125db633619a0b4c7bd1d498ea2bf1cefa4f73d3 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 09 二月 2023 18:54:13 +0800
Subject: [PATCH] '远程OCR'

---
 ConsoleApplication/LimitUpCapture.cpp |   68 ++++++---------------------------
 1 files changed, 13 insertions(+), 55 deletions(-)

diff --git a/ConsoleApplication/LimitUpCapture.cpp b/ConsoleApplication/LimitUpCapture.cpp
index 0c772c6..57aba35 100644
--- a/ConsoleApplication/LimitUpCapture.cpp
+++ b/ConsoleApplication/LimitUpCapture.cpp
@@ -13,6 +13,7 @@
 bool LimitUpCapture::kill;
 
 CallbackFun_Limit_Up LimitUpCapture::data_callback;
+MatOcrFun  LimitUpCapture::ocr_fun;
 
 std::list<cv::Point> LimitUpCapture::pointList;
 
@@ -45,7 +46,7 @@
 			clock_t start = clock();
 			try {
 				list<LimitUpData> codes = captureLimitUpCodes();
-				cout << "耗时:" << clock() - start << "  数量:" << codes.size() << endl;
+				//cout << "耗时:" << clock() - start << "  数量:" << codes.size() << endl;
 				data_callback(codes, context);
 				codes.clear();
 			}
@@ -62,8 +63,9 @@
 
 bool LimitUpCapture::pause;
 
-void LimitUpCapture::init(CallbackFun_Limit_Up callback, void* contex) {
+void LimitUpCapture::init(CallbackFun_Limit_Up callback, MatOcrFun matMcrFun, void* contex) {
 	data_callback = callback;
+	ocr_fun = matMcrFun;
 	context = contex;
 	running = false;
 	kill = false;
@@ -136,63 +138,19 @@
 		throw string("未获取到内容窗口的菜单句柄");
 
 	//查找菜单的位置
-
 	cv::Mat grayImg = ImgUtil::grayImage(CaptureUtil::capture(menuWin));
-	int full_start = -1;
-	int full_end = -1;
-	int start_row = -1;
-	int end_row = -1;
-	int count = 0;
+
 	pointList.clear();
-	for (int r = grayImg.rows - 1;r>=0;r --) {
-		if (ImgDivider::isRowFull(grayImg,r,0, grayImg.cols-1,2,33,48)) {
-			if (full_start < 0)
-			{
-				full_start = r;
-				full_end = r;
-			}
-			else {
-				full_end = r;
-			}
-
-			if (start_row > 0 && end_row > 0 && (start_row - end_row) > 5) {
-				count++;
-				printf("%d-%d\n", start_row, end_row);
-			
-				full_start = r;
-				full_end = r;
-				string path = "C:\\Users\\Administrator\\Desktop\\ocr\\menu\\";
-				path.append("menu_").append(to_string(count)).append(".jpg");
-
-				//cv::imwrite(path, cv::Mat(grayImg,cv::Rect(0,end_row,grayImg.cols,start_row-end_row)));
-			
-				pointList.push_back(cv::Point(  ( 0 + grayImg.cols)/2, (start_row + end_row)/2));
-				if (pointList.size() >= 2) {
-					break;
-				}
-				start_row = -1;
-				end_row = -1;
-			}
-		}
-		else {
-			if (full_start >= 0)
-			{
-				if (start_row < 0)
-				{
-					start_row = r;
-					end_row = r;
-				}
-				else {
-					end_row = r;
-				}
-			}
+	list<OCRResult> ocrResultList = ocr_fun("今日", grayImg);
+	if (ocrResultList.size() > 0) {
+		for (list<OCRResult>::iterator ele = ocrResultList.begin(); ele != ocrResultList.end(); ele++) {
+			OCRResult result = *ele;
+			pointList.push_back(cv::Point((result.rect.left+result.rect.right)/2, (result.rect.top + result.rect.bottom) / 2));
+			ImgUtil::markMat(grayImg, cv::Rect(result.rect.left, result.rect.top, result.rect.right - result.rect.left +1, result.rect.bottom - result.rect.top + 1), 255, 1);
 		}
 	}
-
-
-
-	//cv::imwrite("C:\\Users\\Administrator\\Desktop\\ocr\\menu.jpg", );
-
+	//保存临时图片 
+	//cv::imwrite("C:\\Users\\Administrator\\Desktop\\ocr\\menu.jpg", grayImg);
 }
 
 bool LimitUpCapture::isRunning() {

--
Gitblit v1.8.0