sg_getBagPosition version 1.1.1
增加了错误代码。当托盘为空时,错误代码为 SX_BAG_TRAY_EMPTY,指示托盘为空
This commit is contained in:
parent
335ee0a92f
commit
05e5ef143b
@ -3101,7 +3101,8 @@ int main()
|
|||||||
lineV, maxTimeStamp, clockPerSecond);
|
lineV, maxTimeStamp, clockPerSecond);
|
||||||
#endif
|
#endif
|
||||||
std::vector<SSG_peakRgnInfo> objOps;
|
std::vector<SSG_peakRgnInfo> objOps;
|
||||||
sg_getBagPosition(laser3DPoints, lineNum, algoParam, poseCalibPara, objOps);
|
int errCode = 0;
|
||||||
|
sg_getBagPosition(laser3DPoints, lineNum, algoParam, poseCalibPara, objOps, &errCode);
|
||||||
#endif
|
#endif
|
||||||
long t2 = GetTickCount64();
|
long t2 = GetTickCount64();
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,8 @@
|
|||||||
#include <limits>
|
#include <limits>
|
||||||
|
|
||||||
//version 1.1.0 : 基准版本基础上添加了(1)版本号(2)输出模式,支持按序输出和按大输出
|
//version 1.1.0 : 基准版本基础上添加了(1)版本号(2)输出模式,支持按序输出和按大输出
|
||||||
std::string m_strVersion = "1.1.0";
|
//version 1.1.1 : 增加了错误代码。当托盘为空时,错误代码为 SX_BAG_TRAY_EMPTY,指示托盘为空
|
||||||
|
std::string m_strVersion = "1.1.1";
|
||||||
const char* sg_bagPositioningVersion(void)
|
const char* sg_bagPositioningVersion(void)
|
||||||
{
|
{
|
||||||
return m_strVersion.c_str();
|
return m_strVersion.c_str();
|
||||||
@ -2237,8 +2238,10 @@ void sg_getBagPosition(
|
|||||||
//std::vector<std::vector<int>>& noisePts,
|
//std::vector<std::vector<int>>& noisePts,
|
||||||
const SG_bagPositionParam algoParam,
|
const SG_bagPositionParam algoParam,
|
||||||
const SSG_planeCalibPara poseCalibPara,
|
const SSG_planeCalibPara poseCalibPara,
|
||||||
std::vector<SSG_peakRgnInfo>& objOps)
|
std::vector<SSG_peakRgnInfo>& objOps,
|
||||||
|
int* errCode)
|
||||||
{
|
{
|
||||||
|
*errCode = 0;
|
||||||
///噪点过滤
|
///噪点过滤
|
||||||
//垂直方向过滤
|
//垂直方向过滤
|
||||||
for (int i = 0; i < lineNum; i++)
|
for (int i = 0; i < lineNum; i++)
|
||||||
@ -2299,7 +2302,10 @@ void sg_getBagPosition(
|
|||||||
if (maskY % 2 > 0)
|
if (maskY % 2 > 0)
|
||||||
maskY++;
|
maskY++;
|
||||||
if ((maskX < 16) || (maskY < 16))
|
if ((maskX < 16) || (maskY < 16))
|
||||||
|
{
|
||||||
|
*errCode = SX_BAG_TRAY_EMPTY;
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
const int x_skip = 2;
|
const int x_skip = 2;
|
||||||
const int y_skip = 2;
|
const int y_skip = 2;
|
||||||
maskY = maskY + y_skip * 2;
|
maskY = maskY + y_skip * 2;
|
||||||
@ -2382,6 +2388,8 @@ void sg_getBagPosition(
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
int vldRgnSize = (int)((algoParam.bagParam.bagL * algoParam.bagParam.bagW / 2) / (scale * scale));
|
int vldRgnSize = (int)((algoParam.bagParam.bagL * algoParam.bagParam.bagW / 2) / (scale * scale));
|
||||||
|
//统计有效目标数
|
||||||
|
int vldRgnNum = 0;
|
||||||
for (int rgnid = 0, rgn_max = (int)labelRgns.size(); rgnid < rgn_max; rgnid++)
|
for (int rgnid = 0, rgn_max = (int)labelRgns.size(); rgnid < rgn_max; rgnid++)
|
||||||
{
|
{
|
||||||
SSG_Region* a_rgn = &labelRgns[rgnid];
|
SSG_Region* a_rgn = &labelRgns[rgnid];
|
||||||
@ -2397,7 +2405,16 @@ void sg_getBagPosition(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
vldRgnNum++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(vldRgnNum == 0)
|
||||||
|
{
|
||||||
|
*errCode = SX_BAG_TRAY_EMPTY;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//将无效rgn的点无效
|
//将无效rgn的点无效
|
||||||
for (int line = 0; line < lineNum; line++)
|
for (int line = 0; line < lineNum; line++)
|
||||||
{
|
{
|
||||||
@ -2414,6 +2431,7 @@ void sg_getBagPosition(
|
|||||||
pt3D->pt3D.z = 0;
|
pt3D->pt3D.z = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if OUTPUT_DEBUG
|
#if OUTPUT_DEBUG
|
||||||
cv::Mat filterMaskImage;
|
cv::Mat filterMaskImage;
|
||||||
//cv::normalize(distTranformMask, maskImage, 0, 255, cv::NORM_MINMAX, CV_8U);
|
//cv::normalize(distTranformMask, maskImage, 0, 255, cv::NORM_MINMAX, CV_8U);
|
||||||
@ -2750,7 +2768,10 @@ if (hLine == 14)
|
|||||||
maskX = (int)(x_range.max - x_range.min) + 1;
|
maskX = (int)(x_range.max - x_range.min) + 1;
|
||||||
maskY = (int)(y_range.max - y_range.min) + 1;
|
maskY = (int)(y_range.max - y_range.min) + 1;
|
||||||
if ((maskX < 16) || (maskY < 16))
|
if ((maskX < 16) || (maskY < 16))
|
||||||
|
{
|
||||||
|
*errCode = SX_BAG_TRAY_EMPTY;
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
maskY = maskY + y_skip * 2;
|
maskY = maskY + y_skip * 2;
|
||||||
maskX = maskX + x_skip * 2;
|
maskX = maskX + x_skip * 2;
|
||||||
cv::Mat distTranformMask(maskY, maskX, CV_32FC1, 0.0f); //距离变换Mask,初始化为一个极大值1e+6
|
cv::Mat distTranformMask(maskY, maskX, CV_32FC1, 0.0f); //距离变换Mask,初始化为一个极大值1e+6
|
||||||
@ -4138,7 +4159,8 @@ void sg_getBagPositionAndOrientation(
|
|||||||
(int)cloudPts.size(),
|
(int)cloudPts.size(),
|
||||||
algoParam,
|
algoParam,
|
||||||
poseCalibPara,
|
poseCalibPara,
|
||||||
peakRgn);
|
peakRgn,
|
||||||
|
errCode);
|
||||||
|
|
||||||
//释放内存
|
//释放内存
|
||||||
for (int i = 0, i_max = (int)cloudPts.size(); i < i_max; i++)
|
for (int i = 0, i_max = (int)cloudPts.size(); i < i_max; i++)
|
||||||
|
|||||||
@ -71,7 +71,8 @@ SG_APISHARED_EXPORT void sg_getBagPosition(
|
|||||||
//std::vector<std::vector<int>>& noisePts,
|
//std::vector<std::vector<int>>& noisePts,
|
||||||
const SG_bagPositionParam algoParam,
|
const SG_bagPositionParam algoParam,
|
||||||
const SSG_planeCalibPara poseCalibPara,
|
const SSG_planeCalibPara poseCalibPara,
|
||||||
std::vector<SSG_peakRgnInfo>& objOps);
|
std::vector<SSG_peakRgnInfo>& objOps,
|
||||||
|
int* errCode);
|
||||||
|
|
||||||
SG_APISHARED_EXPORT void sg_getBagPositionAndOrientation(
|
SG_APISHARED_EXPORT void sg_getBagPositionAndOrientation(
|
||||||
SVzNLXYZRGBDLaserLine* laser3DPoints,
|
SVzNLXYZRGBDLaserLine* laser3DPoints,
|
||||||
|
|||||||
@ -20,3 +20,6 @@
|
|||||||
//¶¨×Óץȡ
|
//¶¨×Óץȡ
|
||||||
#define SX_ERR_INVLID_CUTTING_Z -2101
|
#define SX_ERR_INVLID_CUTTING_Z -2101
|
||||||
#define SX_ERR_ZERO_OBJ -2102
|
#define SX_ERR_ZERO_OBJ -2102
|
||||||
|
|
||||||
|
//뀔관
|
||||||
|
#define SX_BAG_TRAY_EMPTY -2201
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user