From ac1a257eb74395f949a1a9693cbb3a1e16e69717 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期五, 15 八月 2025 11:44:52 +0800
Subject: [PATCH] 1. 优化SIdeDimensionSetting表格的读取 2. 优化侧面检的功能,从固定的36个检测点变更为自己设置

---
 VisionMeasure/VisionMeasureClass.cpp |   59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 58 insertions(+), 1 deletions(-)

diff --git a/VisionMeasure/VisionMeasureClass.cpp b/VisionMeasure/VisionMeasureClass.cpp
index 3bd964b..8357e2e 100644
--- a/VisionMeasure/VisionMeasureClass.cpp
+++ b/VisionMeasure/VisionMeasureClass.cpp
@@ -53,7 +53,6 @@
 	HalconCpp::ZoomImageSize(hImage, &hZoomImage, width, szHeight, "constant");
 	HalconCpp::MeanImage(hZoomImage, &hMeanImage, 1, 5);
 
-
 	double xOutResult[MEASURE_MAX_NUM] = { 0 };
 	double yOutResult[MEASURE_MAX_NUM] = { 0 };
 	double cyOutResult[MEASURE_MAX_NUM] = { 0 };
@@ -131,6 +130,64 @@
 	return 1;
 }
 
+int CVisionMeasureClass::doMeasurePosB(unsigned char* img, int width, int height, double sigma,
+	MeasurePoint* measureResult1, int& outResult1,
+	MeasurePoint* measureResult2, int& outResult2,
+	MeasurePoint* measureResult3, int& outResult3) {
+	/* code */
+	if (nullptr == img) return -1;
+
+	HalconCpp::HObject hImage, hZoomImage, hMeanImage;
+	HalconCpp::GenImage1(&hImage, "byte", width, height, (Hlong)img);
+	int szHeight = (int)(0.5 * height);
+	HalconCpp::ZoomImageSize(hImage, &hZoomImage, width, szHeight, "constant");
+	HalconCpp::MeanImage(hZoomImage, &hMeanImage, 1, 5);
+
+	double xOutResult[MEASURE_MAX_NUM] = { 0 };
+	double yOutResult[MEASURE_MAX_NUM] = { 0 };
+	double cyOutResult[MEASURE_MAX_NUM] = { 0 };
+	double distOutResult[MEASURE_MAX_NUM] = { 0 };
+	int outNum = 0;
+
+	int topEdge = 15;
+	int botEdge = szHeight - 16;
+	int step = (int)((botEdge - topEdge) / 2);
+	int x1 = 5;
+	int x2 = width - 6;
+	for (int i = 0; i < 3; i++) {
+		int y1 = topEdge + i * step;
+		int y2 = y1;
+		int threshold = 10;
+		doMeasurePosApi(hMeanImage, x1, y1, x2, y2, 10, threshold, sigma, xOutResult, yOutResult, cyOutResult, distOutResult, outNum);
+		if (0 == i) {
+			outResult1 = outNum;
+			for (int i = 0; i < outNum; i++) {
+				measureResult1[i].x = xOutResult[i];
+				measureResult1[i].y = 2 * yOutResult[i];
+				measureResult1[i].cy = cyOutResult[i];
+			}
+		}
+		else if (1 == i) {
+			outResult2 = outNum;
+			for (int i = 0; i < outNum; i++) {
+				measureResult2[i].x = xOutResult[i];
+				measureResult2[i].y = 2 * yOutResult[i];
+				measureResult2[i].cy = cyOutResult[i];
+			}
+		}
+		else if (2 == i) {
+			outResult3 = outNum;
+			for (int i = 0; i < outNum; i++) {
+				measureResult3[i].x = xOutResult[i];
+				measureResult3[i].y = 2 * yOutResult[i];
+				measureResult3[i].cy = cyOutResult[i];
+			}
+		}
+	}
+
+	return 1;
+}
+
 std::string CVisionMeasureClass::GetAppPathA(void) {
 	/* code */
 	char szFilePath[MAX_PATH] = { 0 }, szDrive[MAX_PATH] = { 0 }, szDir[MAX_PATH] = { 0 }, szFileName[MAX_PATH] = { 0 }, szExt[MAX_PATH] = { 0 };

--
Gitblit v1.9.3