2D 单相机本地测试:通讯-品规

master
zhou.mengjia 2 years ago
parent 71163a60e3
commit f97edb105c

@ -18,20 +18,14 @@ Identify the types and quantities of smoke boxes
SmokeBoxIdentification.cpp中根据STOCK_CHECK_HEAD等关键词选择哪个相机进行拍照。 周三下午
所以需要跟通讯对一下,什么信号可以说明是哪个方向的相机进行拍摄 2D相机模块修改由于之前是多个相机拍一个库若前一个相机的图像为OK则不运行下一个故而vecImageInfo中的值都是多个相机拍的一堆烟
之前是captureSide和captureTop顶部和侧面拍摄 但是石家庄方案只需要一台相机拍摄即可品规。一个软件接入的多台相机是分别要执行的结果
相机载入的时候,读入矫正文件: +结果绘制:调色+文字+大模板结果需要放大2倍
m_calib->Load(strFileName.toStdString().c_str()); 3D模块先接入相机
图片矫正:
m_calib->FixImage(m_imgOrigin, m_imgFixed);

@ -3,6 +3,7 @@
"CodeScan": 0, "CodeScan": 0,
"Sensor": 0, "Sensor": 0,
"Camera2D": 4, "Camera2D": 4,
"Camera3D": 1 "Camera3D": 1,
"COMMRules": 1
} }
} }

@ -1,44 +1,192 @@
Info | 2024-01-09 18:47:06 周二 | initCamera Info | 2024-01-09 20:10:17 周二 | initCamera
Debug | 2024-01-09 18:47:06 周二 | Decode smokeInfo from "D:/Code/Logistics/smokeboxidentification/runner17/Release\\user\\smokeInfo.xlsx" successed Debug | 2024-01-09 20:10:17 周二 | Decode smokeInfo from "D:/Code/Logistics/smokeboxidentification/runner17/Release\\user\\smokeInfo.xlsx" successed
Debug | 2024-01-09 18:47:06 周二 | "D:/Code/Logistics/smokeboxidentification/runner17/Release\\templateNum" has not folder Debug | 2024-01-09 20:10:17 周二 | "D:/Code/Logistics/smokeboxidentification/runner17/Release\\templateNum" has not folder
Debug | 2024-01-09 18:47:06 周二 | Find device: "00787720450" Debug | 2024-01-09 20:10:17 周二 | Find device: "00787720450"
Debug | 2024-01-09 18:47:06 周二 | m_vecPCamera size: 1 Debug | 2024-01-09 20:10:17 周二 | m_vecPCamera size: 1
Warning | 2024-01-09 18:47:06 周二 | QObject::moveToThread: Cannot move objects with a parent Warning | 2024-01-09 20:10:17 周二 | QObject::moveToThread: Cannot move objects with a parent
Debug | 2024-01-09 18:47:06 周二 | init CategoryMatcher successed Debug | 2024-01-09 20:10:17 周二 | init CategoryMatcher successed
Debug | 2024-01-09 18:47:06 周二 | NetControl::onConnected Debug | 2024-01-09 20:10:18 周二 | NetControl::onConnected
TPTcpClient::slotConnected TPTcpClient::slotConnected
Debug | 2024-01-09 18:47:06 周二 | 网络连接成功!!! Debug | 2024-01-09 20:10:18 周二 | 网络连接成功!!!
Debug | 2024-01-09 18:47:08 周二 | Open camera: "00787720450" successed Debug | 2024-01-09 20:10:19 周二 | Open camera: "00787720450" successed
Debug | 2024-01-09 18:47:08 周二 | Start camera: "00787720450" successed Debug | 2024-01-09 20:10:19 周二 | Start camera: "00787720450" successed
Debug | 2024-01-09 18:47:08 周二 | Set device successed Debug | 2024-01-09 20:10:19 周二 | Set device successed
Debug | 2024-01-09 18:47:08 周二 | Set camera: "00787720450" software trigger successed Debug | 2024-01-09 20:10:19 周二 | Set camera: "00787720450" software trigger successed
Warning | 2024-01-09 18:47:10 周二 | i receive data from server: "GP&6&111&2121&1&310102&25>" Warning | 2024-01-09 20:10:23 周二 | i receive data from server: "ST&6&111&2121&1>"
Debug | 2024-01-09 18:47:10 周二 | msg: "GP&6&111&2121&1&310102&25>" content: "GP&6&111&2121&1&310102&25" Debug | 2024-01-09 20:10:23 周二 | msg: "ST&6&111&2121&1>" content: "ST&6&111&2121&1"
Debug | 2024-01-09 18:47:10 周二 | strlist length: 7 head: "GP" Debug | 2024-01-09 20:10:23 周二 | strlist length: 5 head: "ST"
Info | 2024-01-09 18:47:10 周二 | [captureSide]: Enter Debug | 2024-01-09 20:10:23 周二 | 开始盘点
Info | 2024-01-09 18:47:10 周二 | [onCapture]: Enter Warning | 2024-01-09 20:10:30 周二 | i receive data from server: "GP&6&111&2121&1&310102&25>"
Info | 2024-01-09 18:47:10 周二 | [onCapture]: cameraLocation = 0 Debug | 2024-01-09 20:10:30 周二 | msg: "GP&6&111&2121&1&310102&25>" content: "GP&6&111&2121&1&310102&25"
Info | 2024-01-09 18:47:10 周二 | [onCapture]: Out Debug | 2024-01-09 20:10:30 周二 | strlist length: 7 head: "GP"
Debug | 2024-01-09 18:47:10 周二 | start capture, length: 1 Debug | 2024-01-09 20:10:30 周二 | 到位取图
Debug | 2024-01-09 18:47:10 周二 | convert Mat successed! Info | 2024-01-09 20:10:30 周二 | [captureSide]: Enter
Debug | 2024-01-09 18:47:10 周二 | 不旋转 Info | 2024-01-09 20:10:30 周二 | [onCapture]: Enter
Info | 2024-01-09 18:47:10 周二 | imgInfo.image.cols = 1920 Info | 2024-01-09 20:10:30 周二 | [onCapture]: cameraLocation = 0
Info | 2024-01-09 18:47:10 周二 | imgInfo.image.rows = 1200 Info | 2024-01-09 20:10:30 周二 | [onCapture]: Out
Info | 2024-01-09 18:47:10 周二 | imgInfo.image.step = 1920 Debug | 2024-01-09 20:10:30 周二 | start capture, length: 1
Info | 2024-01-09 18:47:10 周二 | imgInfo.imageOrigin == nullptr Debug | 2024-01-09 20:10:31 周二 | convert Mat successed!
Debug | 2024-01-09 18:47:10 周二 | [Camera]: Side Camera Captured. Debug | 2024-01-09 20:10:31 周二 | 不旋转
Debug | 2024-01-09 18:47:10 周二 | Save image: ".\\fileData\\\\1.BMP" Debug | 2024-01-09 20:10:31 周二 | [Camera]: Side Camera Captured.
Debug | 2024-01-09 18:47:10 周二 | "Camera 00787720450 Match Start ..." Info | 2024-01-09 20:10:31 周二 | workMode = 2
Info | 2024-01-09 18:47:10 周二 | "Camera 00787720450 SetImageData OK!" Debug | 2024-01-09 20:10:31 周二 | Save image: ".\\fileData\\2121\\1.BMP"
Critical | 2024-01-09 18:47:10 周二 | strList.last() = "11" Debug | 2024-01-09 20:10:31 周二 | "Camera 00787720450 Match Start ..."
Critical | 2024-01-09 18:47:10 周二 | jieduan = "1" Debug | 2024-01-09 20:10:31 周二 | Get TemplateImg OK!
Critical | 2024-01-09 18:47:10 周二 | level = 1 Debug | 2024-01-09 20:10:31 周二 | templateLevel = 2
Debug | 2024-01-09 18:47:10 周二 | Get TemplateImg OK! Info | 2024-01-09 20:10:31 周二 | level = 1
Debug | 2024-01-09 18:47:10 周二 | templateLevel = 1 Info | 2024-01-09 20:10:31 周二 | templateImgPath = "./templateImg/310102/310102-11.bmp"
Info | 2024-01-09 18:47:10 周二 | level = 1 Debug | 2024-01-09 20:10:31 周二 | Level == 1
Info | 2024-01-09 18:47:10 周二 | templateImgPath = "./templateImg/310102/310102-11.bmp" Info | 2024-01-09 20:10:31 周二 | level = 2
Debug | 2024-01-09 18:47:10 周二 | Level == 1 Info | 2024-01-09 20:10:31 周二 | templateImgPath = "./templateImg/310102/310102-21.bmp"
Debug | 2024-01-09 18:47:11 周二 | "Level: 1 match failed!" Debug | 2024-01-09 20:10:32 周二 | "Camera 00787720450 Match successful!"
Debug | 2024-01-09 18:47:44 周二 | delete netControl Info | 2024-01-09 20:10:32 周二 | fileName "1_310102_rlt.BMP"
Debug | 2024-01-09 18:47:44 周二 | NetControl::onDisconnected Info | 2024-01-09 20:10:32 周二 | filePath ".\\fileData\\2121\\1_310102_rlt.BMP"
Debug | 2024-01-09 20:10:32 周二 | send msg: "RT&6&111&2121&1&&&0>"
Warning | 2024-01-09 20:16:35 周二 | i receive data from server: "ST&6&111&2121&1>"
Debug | 2024-01-09 20:16:35 周二 | msg: "ST&6&111&2121&1>" content: "ST&6&111&2121&1"
Debug | 2024-01-09 20:16:35 周二 | strlist length: 5 head: "ST"
Debug | 2024-01-09 20:16:35 周二 | 开始盘点
Warning | 2024-01-09 20:16:40 周二 | i receive data from server: "GP&6&111&2121&1&310102&25>"
Debug | 2024-01-09 20:16:40 周二 | msg: "GP&6&111&2121&1&310102&25>" content: "GP&6&111&2121&1&310102&25"
Debug | 2024-01-09 20:16:40 周二 | strlist length: 7 head: "GP"
Debug | 2024-01-09 20:16:40 周二 | 到位取图
Info | 2024-01-09 20:16:40 周二 | [captureSide]: Enter
Info | 2024-01-09 20:16:40 周二 | [onCapture]: Enter
Info | 2024-01-09 20:16:40 周二 | [onCapture]: cameraLocation = 0
Info | 2024-01-09 20:16:40 周二 | [onCapture]: Out
Debug | 2024-01-09 20:16:40 周二 | start capture, Debug | 2024-01-09 20:16:45 周二 | delete netControl
Debug | 2024-01-09 20:16:45 周二 | NetControl::onDisconnected
TPTcpClient::slotDisconnected TPTcpClient::slotDisconnected
<EFBFBD> | [Camera]: Side Camera Captured.
Info | 2024-01-09 20:16:40 周二 | workMode = 2
Debug | 2024-01-09 20:16:40 周二 | Save image: ".\\fileData\\2121\\1.BMP"
Debug | 2024-01-09 20:16:40 周二 | "Camera 00787720450 Match Start ..."
Debug | 2024-01-09 20:16:40 周二 | Get TemplateImg OK!
Debug | 2024-01-09 20:16:40 周二 | templateLevel = 2
Info | 2024-01-09 20:16:40 周二 | level = 1
Info | 2024-01-09 20:16:40 周二 | templateImgPath = "./templateImg/310102/310102-11.bmp"
Debug | 2024-01-09 20:16:40 周二 | Level == 1
Info | 2024-01-09 20:16:40 周二 | level = 2
Info | 2024-01-09 20:16:40 周二 | templateImgPath = "./templateImg/310102/310102-21.bmp"
Debug | 2024-01-09 20:16:41 周二 | "Camera 00787720450 Match successful!"
Info | 2024-01-09 20:16:41 周二 | fileName "1_310102_rlt.BMP"
Info | 2024-01-09 20:16:41 周二 | filePath ".\\fileData\\2121\\1_310102_rlt.BMP"
Debug | 2024-01-09 20:16:41 周二 | send msg: "RT&6&111&2121&1&&&0>"
Debug | 2024-01-09 20:17:09 周二 | delete netControl
Debug | 2024-01-09 20:17:09 周二 | NetControl::onDisconnected
TPTcpClient::slotDisconnected
Info | 2024-01-09 20:18:42 周二 | initCamera
Debug | 2024-01-09 20:18:42 周二 | Decode smokeInfo from "D:/Code/Logistics/smokeboxidentification/runner17/Release\\user\\smokeInfo.xlsx" successed
Debug | 2024-01-09 20:18:42 周二 | "D:/Code/Logistics/smokeboxidentification/runner17/Release\\templateNum" has not folder
Debug | 2024-01-09 20:18:42 周二 | Find device: "00787720450"
Debug | 2024-01-09 20:18:43 周二 | m_vecPCamera size: 1
Warning | 2024-01-09 20:18:43 周二 | QObject::moveToThread: Cannot move objects with a parent
Debug | 2024-01-09 20:18:43 周二 | init CategoryMatcher successed
Debug | 2024-01-09 20:18:43 周二 | NetControl::onConnected
TPTcpClient::slotConnected
Debug | 2024-01-09 20:18:43 周二 | 网络连接成功!!!
Debug | 2024-01-09 20:18:44 周二 | Open camera: "00787720450" successed
Debug | 2024-01-09 20:18:44 周二 | Start camera: "00787720450" successed
Debug | 2024-01-09 20:18:44 周二 | Set device successed
Debug | 2024-01-09 20:18:44 周二 | Set camera: "00787720450" software trigger successed
Warning | 2024-01-09 20:18:53 周二 | i receive data from server: "ST&6&111&2121&1>"
Debug | 2024-01-09 20:18:53 周二 | msg: "ST&6&111&2121&1>" content: "ST&6&111&2121&1"
Debug | 2024-01-09 20:18:53 周二 | strlist length: 5 head: "ST"
Debug | 2024-01-09 20:18:53 周二 | 开始盘点
Warning | 2024-01-09 20:18:58 周二 | i receive data from server: "GP&6&111&2121&1&310102&25>"
Debug | 2024-01-09 20:18:58 周二 | msg: "GP&6&111&2121&1&310102&25>" content: "GP&6&111&2121&1&310102&25"
Debug | 2024-01-09 20:18:58 周二 | strlist length: 7 head: "GP"
Debug | 2024-01-09 20:18:58 周二 | 到位取图
Info | 2024-01-09 20:18:58 周二 | [captureSide]: Enter
Info | 2024-01-09 20:18:58 周二 | [onCapture]: Enter
Info | 2024-01-09 20:18:58 周二 | [onCapture]: cameraLocation = 0
Info | 2024-01-09 20:18:58 周二 | [onCapture]: Out
Debug | 2024-01-09 20:18:58 周二 | start capture, length: 1
Debug | 2024-01-09 20:18:58 周二 | convert Mat successed!
Debug | 2024-01-09 20:18:58 周二 | 不旋转
Debug | 2024-01-09 20:18:58 周二 | [Camera]: Side Camera Captured.
Info | 2024-01-09 20:18:58 周二 | workMode = 2
Debug | 2024-01-09 20:18:58 周二 | Save image: ".\\fileData\\2121\\1.BMP"
Debug | 2024-01-09 20:18:58 周二 | "Camera 00787720450 Match Start ..."
Debug | 2024-01-09 20:18:58 周二 | Get TemplateImg OK!
Debug | 2024-01-09 20:18:58 周二 | templateLevel = 2
Info | 2024-01-09 20:18:58 周二 | level = 1
Info | 2024-01-09 20:18:58 周二 | templateImgPath = "./templateImg/310102/310102-11.bmp"
Debug | 2024-01-09 20:18:58 周二 | Level == 1
Info | 2024-01-09 20:18:58 周二 | level = 2
Info | 2024-01-09 20:18:58 周二 | templateImgPath = "./templateImg/310102/310102-21.bmp"
Debug | 2024-01-09 20:18:59 周二 | "Camera 00787720450 Match successful!"
Info | 2024-01-09 20:18:59 周二 | fileName "1_310102_rlt.BMP"
Info | 2024-01-09 20:18:59 周二 | filePath ".\\fileData\\2121\\1_310102_rlt.BMP"
Debug | 2024-01-09 20:18:59 周二 | send msg: "RT&6&111&2121&1&&&0>"
Debug | 2024-01-09 20:20:07 周二 | delete netControl
Debug | 2024-01-09 20:20:07 周二 | NetControl::onDisconnected
TPTcpClient::slotDisconnected
Info | 2024-01-09 20:20:26 周二 | initCamera
Debug | 2024-01-09 20:20:26 周二 | Decode smokeInfo from "D:/Code/Logistics/smokeboxidentification/runner17/Release\\user\\smokeInfo.xlsx" successed
Debug | 2024-01-09 20:20:26 周二 | "D:/Code/Logistics/smokeboxidentification/runner17/Release\\templateNum" has not folder
Debug | 2024-01-09 20:20:26 周二 | Find device: "00787720450"
Debug | 2024-01-09 20:20:26 周二 | m_vecPCamera size: 1
Warning | 2024-01-09 20:20:26 周二 | QObject::moveToThread: Cannot move objects with a parent
Debug | 2024-01-09 20:20:26 周二 | init CategoryMatcher successed
Debug | 2024-01-09 20:20:26 周二 | NetControl::onConnected
TPTcpClient::slotConnected
Debug | 2024-01-09 20:20:26 周二 | 网络连接成功!!!
Debug | 2024-01-09 20:20:28 周二 | Open camera: "00787720450" successed
Debug | 2024-01-09 20:20:28 周二 | Start camera: "00787720450" successed
Debug | 2024-01-09 20:20:28 周二 | Set device successed
Debug | 2024-01-09 20:20:28 周二 | Set camera: "00787720450" software trigger successed
Warning | 2024-01-09 20:20:35 周二 | i receive data from server: "ST&6&111&2121&1>"
Debug | 2024-01-09 20:20:35 周二 | msg: "ST&6&111&2121&1>" content: "ST&6&111&2121&1"
Debug | 2024-01-09 20:20:35 周二 | strlist length: 5 head: "ST"
Debug | 2024-01-09 20:20:35 周二 | 开始盘点
Warning | 2024-01-09 20:20:40 周二 | i receive data from server: "GP&6&111&2121&1&310102&25>"
Debug | 2024-01-09 20:20:40 周二 | msg: "GP&6&111&2121&1&310102&25>" content: "GP&6&111&2121&1&310102&25"
Debug | 2024-01-09 20:20:40 周二 | strlist length: 7 head: "GP"
Debug | 2024-01-09 20:20:40 周二 | 到位取图
Info | 2024-01-09 20:20:40 周二 | [captureSide]: Enter
Info | 2024-01-09 20:20:40 周二 | [onCapture]: Enter
Info | 2024-01-09 20:20:40 周二 | [onCapture]: cameraLocation = 0
Info | 2024-01-09 20:20:40 周二 | [onCapture]: Out
Debug | 2024-01-09 20:20:40 周二 | start capture, length: 1
Debug | 2024-01-09 20:20:40 周二 | convert Mat successed!
Debug | 2024-01-09 20:20:40 周二 | 不旋转
Debug | 2024-01-09 20:20:40 周二 | [Camera]: Side Camera Captured.
Info | 2024-01-09 20:20:40 周二 | workMode = 2
Debug | 2024-01-09 20:20:40 周二 | Save image: ".\\fileData\\2121\\1.BMP"
Debug | 2024-01-09 20:20:40 周二 | "Camera 00787720450 Match Start ..."
Debug | 2024-01-09 20:20:40 周二 | Get TemplateImg OK!
Debug | 2024-01-09 20:20:40 周二 | templateLevel = 2
Info | 2024-01-09 20:20:40 周二 | level = 1
Info | 2024-01-09 20:20:40 周二 | templateImgPath = "./templateImg/310102/310102-11.bmp"
Debug | 2024-01-09 20:20:40 周二 | Level == 1
Info | 2024-01-09 20:20:41 周二 | level = 2
Info | 2024-01-09 20:20:41 周二 | templateImgPath = "./templateImg/310102/310102-21.bmp"
Debug | 2024-01-09 20:20:41 周二 | "Camera 00787720450 Match successful!"
Info | 2024-01-09 20:20:41 周二 | fileName "1_310102_rlt.BMP"
Info | 2024-01-09 20:20:41 周二 | filePath ".\\fileData\\2121\\1_310102_rlt.BMP"
Warning | 2024-01-09 20:20:48 周二 | i receive data from server: "GP&6&111&2121&1&310102&25>"
Debug | 2024-01-09 20:20:48 周二 | msg: "GP&6&111&2121&1&310102&25>" content: "GP&6&111&2121&1&310102&25"
Debug | 2024-01-09 20:20:48 周二 | strlist length: 7 head: "GP"
Debug | 2024-01-09 20:20:48 周二 | 到位取图
Info | 2024-01-09 20:20:48 周二 | [captureSide]: Enter
Info | 2024-01-09 20:20:48 周二 | [onCapture]: Enter
Info | 2024-01-09 20:20:48 周二 | [onCapture]: cameraLocation = 0
Info | 2024-01-09 20:20:48 周二 | [onCapture]: Out
Debug | 2024-01-09 20:20:48 周二 | start capture, length: 1
Debug | 2024-01-09 20:20:48 周二 | convert Mat successed!
Debug | 2024-01-09 20:20:48 周二 | 不旋转
Debug | 2024-01-09 20:20:48 周二 | [Camera]: Side Camera Captured.
Info | 2024-01-09 20:20:48 周二 | workMode = 2
Debug | 2024-01-09 20:20:48 周二 | Save image: ".\\fileData\\2121\\1.BMP"
Debug | 2024-01-09 20:20:48 周二 | "Camera 00787720450 Match Start ..."
Debug | 2024-01-09 20:20:48 周二 | Get TemplateImg OK!
Debug | 2024-01-09 20:20:48 周二 | templateLevel = 2
Info | 2024-01-09 20:20:48 周二 | level = 1
Info | 2024-01-09 20:20:48 周二 | templateImgPath = "./templateImg/310102/310102-11.bmp"
Debug | 2024-01-09 20:20:48 周二 | Level == 1
Info | 2024-01-09 20:20:48 周二 | level = 2
Info | 2024-01-09 20:20:48 周二 | templateImgPath = "./templateImg/310102/310102-21.bmp"
Debug | 2024-01-09 20:20:49 周二 | "Camera 00787720450 Match successful!"
Info | 2024-01-09 20:20:49 周二 | fileName "1_310102_rlt.BMP"
Info | 2024-01-09 20:20:49 周二 | filePath ".\\fileData\\2121\\1_310102_rlt.BMP"

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@ -495,7 +495,8 @@ void CameraControl::capture(const QStringList& serialNumberList)
imgInfo.imageOrigin = ILImagePtr(__uuidof(LImage)); imgInfo.imageOrigin = ILImagePtr(__uuidof(LImage));
imgInfo.imageFixed = ILImagePtr(__uuidof(LImage)); imgInfo.imageFixed = ILImagePtr(__uuidof(LImage));
} }
imgInfo.imageOrigin->SetImageData(imgInfo.image.cols, imgInfo.image.rows, (void*)imgInfo.image.data, imgInfo.image.step, 0); //imgInfo.imageOrigin->SetImageData(imgInfo.image.cols, imgInfo.image.rows, (void*)imgInfo.image.data, imgInfo.image.step, 0);
imgInfo.imageOrigin->Load("C:/Users/LENOVO/Downloads/0108/310102.bmp");
if (m_calib->IsCalibrated()) if (m_calib->IsCalibrated())
{ {
m_calib->FixImage(imgInfo.imageOrigin, imgInfo.imageFixed); m_calib->FixImage(imgInfo.imageOrigin, imgInfo.imageFixed);

@ -73,6 +73,7 @@ void CategoryMatcher::setILMatch(const MatchParam& matchParam)
} }
bool CategoryMatcher::smokeMatch(const QString& typeNo, ILImagePtr image) bool CategoryMatcher::smokeMatch(const QString& typeNo, ILImagePtr image)
{ {
std::pair<int, QVector<ILMatchResultPtr>> templateLevelAndvecMatchRltPtr; std::pair<int, QVector<ILMatchResultPtr>> templateLevelAndvecMatchRltPtr;
@ -133,8 +134,6 @@ bool CategoryMatcher::smokeMatch(const QString& typeNo, const ILImagePtr ilImgPt
QMap<QString, int> strScoreMap = templateObj.value(level); QMap<QString, int> strScoreMap = templateObj.value(level);
for (QMap<QString, int>::iterator it = strScoreMap.begin(); it != strScoreMap.end(); ++it) for (QMap<QString, int>::iterator it = strScoreMap.begin(); it != strScoreMap.end(); ++it)
{ {
//需要验证没用1类模板但有2类模板的图
QString templateImgPath = it.key(); QString templateImgPath = it.key();
qInfo() << "templateImgPath = "<< templateImgPath; qInfo() << "templateImgPath = "<< templateImgPath;
ILImagePtr ilTemplatePtr(__uuidof(LImage)); ILImagePtr ilTemplatePtr(__uuidof(LImage));
@ -262,9 +261,6 @@ bool CategoryMatcher::getTemplateImgFileInfo(const QString& folderPath, Template
QString templateImgPath = imgFileInfo.filePath(); //相对路径,避免路径存在中文时读取失败 QString templateImgPath = imgFileInfo.filePath(); //相对路径,避免路径存在中文时读取失败
int level = strList.last().mid(0, 1).toInt(); int level = strList.last().mid(0, 1).toInt();
qCritical() << "strList.last() = " << strList.last();
qCritical() << "jieduan = " << strList.last().mid(0, 1);
qCritical() << "level = " << level;
templateObject[level].insert(templateImgPath, 70); templateObject[level].insert(templateImgPath, 70);

@ -153,11 +153,11 @@ void SmokeBoxIdentification::saveImage(const cv::Mat& imgMat, const QString& fil
void SmokeBoxIdentification::saveImage(const QVector<ImageInfo>& vecImageInfo, int workMode) void SmokeBoxIdentification::saveImage(const QVector<ImageInfo>& vecImageInfo, int workMode)
{ {
QString dataSaveFolderPath; QString dataSaveFolderPath;
qInfo() << "workMode = " << workMode;
switch (workMode) switch (workMode)
{ {
case WorkMode::StockCheck: case WorkMode::StockCheck:
dataSaveFolderPath = QString("%1\\%2\\%3").arg(FILE_STORAGE_PATH).arg(m_currtStockCheckInfo.stockNum) dataSaveFolderPath = QString("%1\\%2").arg(FILE_STORAGE_PATH).arg(m_currtStockCheckInfo.taskNum);
.arg(m_currtStockCheckInfo.taskNum);
break; break;
case WorkMode::IntoStock: case WorkMode::IntoStock:
dataSaveFolderPath =QString("%1\\%2\\%3\\%4").arg(FILE_STORAGE_PATH).arg(INTOSTOCK_IMAGE_FOLDER) dataSaveFolderPath =QString("%1\\%2\\%3\\%4").arg(FILE_STORAGE_PATH).arg(INTOSTOCK_IMAGE_FOLDER)
@ -165,7 +165,6 @@ void SmokeBoxIdentification::saveImage(const QVector<ImageInfo>& vecImageInfo, i
break; break;
default: default:
dataSaveFolderPath = QString("%1\\%2").arg(FILE_STORAGE_PATH).arg(m_currtIntoStockInfo.taskNum); dataSaveFolderPath = QString("%1\\%2").arg(FILE_STORAGE_PATH).arg(m_currtIntoStockInfo.taskNum);
//qDebug() << "Mode: " << workMode << "do not save Image";
//return; //return;
} }
QDir folder(dataSaveFolderPath); QDir folder(dataSaveFolderPath);
@ -209,7 +208,7 @@ Q_SLOT void SmokeBoxIdentification::onCapturedImage(const QVector<ImageInfo>& ve
{ {
sendResults(MsgType::DataCollectionEndSC); sendResults(MsgType::DataCollectionEndSC);
} }
else if (m_workMode = WorkMode::IntoStock) else if (m_workMode == WorkMode::IntoStock)
{ {
sendResults(MsgType::IntoStockResult); sendResults(MsgType::IntoStockResult);
} }
@ -234,6 +233,7 @@ Q_SLOT void SmokeBoxIdentification::onCapturedImage(const QVector<ImageInfo>& ve
QString dataSaveFolder = QString("%1\\%2").arg(FILE_STORAGE_PATH) QString dataSaveFolder = QString("%1\\%2").arg(FILE_STORAGE_PATH)
.arg(m_currtStockCheckInfo.taskNum); .arg(m_currtStockCheckInfo.taskNum);
// 由于之前是多个相机拍一个库若前一个相机的图像为OK则不运行下一个
for each (const ImageInfo& imgInfo in vecImageInfo) for each (const ImageInfo& imgInfo in vecImageInfo)
{ {
QString str = QString("Camera %1 Match Start ...").arg(imgInfo.cameraSn); QString str = QString("Camera %1 Match Start ...").arg(imgInfo.cameraSn);
@ -255,12 +255,33 @@ Q_SLOT void SmokeBoxIdentification::onCapturedImage(const QVector<ImageInfo>& ve
m_pCategoryMatcher->saveResultsImage(filePath); m_pCategoryMatcher->saveResultsImage(filePath);
break; break;
} }
else
{
str = QString("Camera %1 Match Failed!").arg(imgInfo.cameraSn);
qWarning() << str;
}
} }
else else
{ {
qDebug() << "imgInfo.image is Empty!"; qDebug() << "imgInfo.image is Empty!";
} }
} }
if (!bRlt)
{
QString filePath = dataSaveFolder + QString("\\%1_error.PNG")
.arg(m_currtStockCheckInfo.smokeTypeNum);
m_pCategoryMatcher->saveResultsImage(filePath);
//saveImage(imgRltMat, filePath);
}
QString typeNumRlt = bRlt ? typeNum : "0";
m_currtStockCheckInfo.smokeTypeNumRlt = typeNumRlt;
qDebug() << "typeNumRlt: " << typeNumRlt;
//等接入3D后需要等3D结果计算出来后再发送正确信息
m_currtStockCheckInfo.smokeQuantityRlt = typeNumRlt;
sendResults(MsgType::StockCheckResult);
//emit sgCategoryMatchFinished(typeNumRlt);
}); });
#elif IMAGEDRAWING==OPENCV #elif IMAGEDRAWING==OPENCV
@ -405,16 +426,26 @@ Q_SLOT void SmokeBoxIdentification::onDecodeMsg(const QString& msg)
} }
} }
} }
else if (strList.at(0) == START_TAKE)
{
qDebug() << "开始盘点";
//m_workMode = WorkMode::IntoStock;
m_currtIntoStockInfo.streetName = strList.at(1);
m_currtIntoStockInfo.id = strList.at(2);
m_currtIntoStockInfo.taskNum = strList.at(3);
m_currtIntoStockInfo.stockLocation = strList.at(4);
}
else if (strList.at(0) == START_CAPTURE) else if (strList.at(0) == START_CAPTURE)
{ {
StockCheckInfo stockCheckInfo; qDebug() << "到位取图";
stockCheckInfo.streetName = strList.at(1); //m_workMode = WorkMode::StockCheck;
stockCheckInfo.id = strList.at(2); m_currtStockCheckInfo.streetName = strList.at(1);
stockCheckInfo.taskNum = strList.at(3); m_currtStockCheckInfo.id = strList.at(2);
stockCheckInfo.stockLocation = strList.at(4); m_currtStockCheckInfo.taskNum = strList.at(3);
stockCheckInfo.smokeTypeNum = strList.at(5); m_currtStockCheckInfo.stockLocation = strList.at(4);
stockCheckInfo.smokeQuantity = strList.at(6); m_currtStockCheckInfo.smokeTypeNum = strList.at(5);
m_currtStockCheckInfo = stockCheckInfo; m_currtStockCheckInfo.smokeQuantity = strList.at(6);
captureSide(); captureSide();
} }
} }
@ -496,31 +527,49 @@ void SmokeBoxIdentification::sendResults(int mode)
.append(SPLIT_RULE).append(m_currtStockCheckInfo.taskNum).append(END_SYMBOL); .append(SPLIT_RULE).append(m_currtStockCheckInfo.taskNum).append(END_SYMBOL);
break; break;
case StockCheckResult: case StockCheckResult:
if (QString::compare(m_currtStockCheckInfo.smokeTypeNum, m_currtStockCheckInfo.smokeTypeNumRlt)<0 switch (m_moduleParam.COMMRules)
&& QString::compare("0", m_currtStockCheckInfo.smokeTypeNumRlt) < 0)
{
resultInfoMsg.append(STOCK_CHECK_HEAD).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.streetName).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.stockNum).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.taskNum).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.smokeTypeNumRlt).append(SPLIT_RULE)
.append(QString::number(0)).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.smokeTypeNumRlt).append(SPLIT_RULE)
.append(QString::number(0)).append(SPLIT_RULE)
.append(QString::number(0)).append(END_SYMBOL);
}
else
{ {
resultInfoMsg.append(STOCK_CHECK_HEAD).append(SPLIT_RULE) case eCommunicationRules::emNJ:
if (QString::compare(m_currtStockCheckInfo.smokeTypeNum, m_currtStockCheckInfo.smokeTypeNumRlt) < 0
&& QString::compare("0", m_currtStockCheckInfo.smokeTypeNumRlt) < 0)
{
resultInfoMsg.append(STOCK_CHECK_HEAD).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.streetName).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.stockNum).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.taskNum).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.smokeTypeNumRlt).append(SPLIT_RULE)
.append(QString::number(0)).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.smokeTypeNumRlt).append(SPLIT_RULE)
.append(QString::number(0)).append(SPLIT_RULE)
.append(QString::number(0)).append(END_SYMBOL);
}
else
{
resultInfoMsg.append(STOCK_CHECK_HEAD).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.streetName).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.stockNum).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.taskNum).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.smokeTypeNum).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.smokeQuantity).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.smokeTypeNumRlt).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.smokeQuantityRlt).append(SPLIT_RULE)
.append(QString::number(m_currtStockCheckInfo.correctness)).append(END_SYMBOL);
}
break;
case eCommunicationRules::emSJZ:
resultInfoMsg.append(RETURN_MES).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.streetName).append(SPLIT_RULE) .append(m_currtStockCheckInfo.streetName).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.stockNum).append(SPLIT_RULE) .append(m_currtStockCheckInfo.id).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.taskNum).append(SPLIT_RULE) .append(m_currtStockCheckInfo.taskNum).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.smokeTypeNum).append(SPLIT_RULE) .append(m_currtStockCheckInfo.stockLocation).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.smokeQuantity).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.smokeTypeNumRlt).append(SPLIT_RULE) .append(m_currtStockCheckInfo.smokeTypeNumRlt).append(SPLIT_RULE)
.append(m_currtStockCheckInfo.smokeQuantityRlt).append(SPLIT_RULE) .append(m_currtStockCheckInfo.smokeQuantityRlt).append(SPLIT_RULE)
.append(QString::number(m_currtStockCheckInfo.correctness)).append(END_SYMBOL); .append(QString::number(m_currtStockCheckInfo.correctness)).append(END_SYMBOL);
break;
default:
break;
} }
break; break;
case IntoStockResult: case IntoStockResult:
{ {
@ -785,6 +834,7 @@ void SmokeBoxIdentification::moduleLoading()
m_moduleParam.Sensor = ModuleParamObj.value("Sensor").toInt(); m_moduleParam.Sensor = ModuleParamObj.value("Sensor").toInt();
m_moduleParam.Camera2D = ModuleParamObj.value("Camera2D").toInt(); m_moduleParam.Camera2D = ModuleParamObj.value("Camera2D").toInt();
m_moduleParam.Camera3D = ModuleParamObj.value("Camera3D").toInt(); m_moduleParam.Camera3D = ModuleParamObj.value("Camera3D").toInt();
m_moduleParam.COMMRules = (eCommunicationRules)ModuleParamObj.value("COMMRules").toInt();
} }
//// 打开文本文件以读取模式 //// 打开文本文件以读取模式

@ -22,9 +22,6 @@
#include "ui_SmokeBoxIdentification.h" #include "ui_SmokeBoxIdentification.h"
//#define IMAGEDRAWING OPENCV
#define IMAGEDRAWING LPV
enum MsgType enum MsgType
{ {
@ -52,9 +49,11 @@ enum StockCheckMode
struct IntoStockInfo struct IntoStockInfo
{ {
QString streetName; QString streetName; // 巷道号
QString taskNum; QString taskNum; // 任务号-工单号
QString stockNum; QString stockNum; //货架位置UL062015020111 6号堆垛机2右边
QString id = 0;
QString stockLocation = 0; // 方向1左2右0保留为之前规则
QStringList imagesPathList; QStringList imagesPathList;
}; };
@ -121,12 +120,14 @@ struct ModuleParam
int Sensor; // 传感器数量0为不安装传感器 int Sensor; // 传感器数量0为不安装传感器
int Camera2D; // 2D相机数量 int Camera2D; // 2D相机数量
int Camera3D; // 3D相机数量 int Camera3D; // 3D相机数量
eCommunicationRules COMMRules; // 通讯规则
ModuleParam() ModuleParam()
{ {
CodeScan = 1; CodeScan = 1;
Sensor = 1; Sensor = 1;
Camera2D = 2; Camera2D = 2;
Camera3D = 2; Camera3D = 2;
COMMRules = eCommunicationRules::emNJ;
} }
}; };

@ -23,6 +23,9 @@
#define DELETE_POINTER(p) if (p) {delete p; p = NULL;} #define DELETE_POINTER(p) if (p) {delete p; p = NULL;}
//#define IMAGEDRAWING OPENCV
#define IMAGEDRAWING LPV
#define MODULE_CONFIG "\\config\\module.json" #define MODULE_CONFIG "\\config\\module.json"
#define CAMERA_CONFIG "\\config\\camera.json" #define CAMERA_CONFIG "\\config\\camera.json"
#define NET_CONFIG "\\config\\netSetting.json" #define NET_CONFIG "\\config\\netSetting.json"
@ -48,7 +51,9 @@
#define CODE_CONTENT_SPLIT "," #define CODE_CONTENT_SPLIT ","
#define CONTENT_SPLIT ";" #define CONTENT_SPLIT ";"
#define END_SYMBOL ">" #define END_SYMBOL ">"
#define START_CAPTURE "GP" #define START_CAPTURE "GP" // 到位取图
#define START_TAKE "ST" // 开始盘点
#define RETURN_MES "RT" // 结果返回
#define LP_COLOR_CONTROL 0x88 #define LP_COLOR_CONTROL 0x88
#define LP_D1TOD80 0x86 #define LP_D1TOD80 0x86
@ -127,6 +132,12 @@ struct debugMsg
QString msAD_2; QString msAD_2;
}; };
enum eCommunicationRules
{
emNJ = 0, // 南京
emSJZ // 石家庄
};
enum eCameraLocation enum eCameraLocation
{ {
emSide=0, // 代表真正有效采集的相机 emSide=0, // 代表真正有效采集的相机

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 MiB

Loading…
Cancel
Save