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