算法更新
This commit is contained in:
@@ -871,13 +871,15 @@ bool Hd_AI_algo_fanMianTieJiao::AIdetect(cv::Mat img2D, QString mysaveKey, QStri
|
||||
else
|
||||
cv::rectangle(Paint, paintRectDown, cv::Scalar(0, 0, 255), 50);
|
||||
|
||||
if ((res1 == 0 || res1 == 2) && (res2 == 0 || res2 == 2))//OK
|
||||
putTextHusky(Paint, byteArrayToUnicode("有贴胶").toStdString().c_str(), cv::Point(0, 50), cv::Scalar(0, 255, 0), 500);
|
||||
else
|
||||
putTextHusky(Paint, byteArrayToUnicode("无贴胶").toStdString().c_str(), cv::Point(0, 50), cv::Scalar(0, 0, 255), 500);
|
||||
//if ((res1 == 0 || res1 == 2) && (res2 == 0 || res2 == 2))//OK
|
||||
// putTextHusky(Paint, byteArrayToUnicode("有贴胶").toStdString().c_str(), cv::Point(0, 50), cv::Scalar(0, 255, 0), 500);
|
||||
//else
|
||||
// putTextHusky(Paint, byteArrayToUnicode("无贴胶").toStdString().c_str(), cv::Point(0, 50), cv::Scalar(0, 0, 255), 500);
|
||||
}
|
||||
else
|
||||
putTextHusky(Paint, byteArrayToUnicode("无物料").toStdString().c_str(), cv::Point(0, 50), cv::Scalar(0, 0, 255), 500);
|
||||
{
|
||||
//putTextHusky(Paint, byteArrayToUnicode("无物料").toStdString().c_str(), cv::Point(0, 50), cv::Scalar(0, 0, 255), 500);
|
||||
}
|
||||
resMat.push_back(Paint);
|
||||
QJsonArray detaillists;
|
||||
//QByteArrayList resQbyte;
|
||||
|
||||
@@ -826,7 +826,7 @@ bool Hd_AI_algo_hanHouCeLiang::AIdetect(cv::Mat img2D, QString mysaveKey, QStrin
|
||||
// csvName.close();
|
||||
//}
|
||||
//sourceImg = cv::imread("D:\\mySN15-46-33-86.bmp",-1);
|
||||
//sourceImg = cv::imread("D:/CCD/Image_20241017202132775.bmp", -1);
|
||||
|
||||
cv::Mat Paint;
|
||||
sourceImg.copyTo(Paint);
|
||||
if(Paint.channels() == 1)
|
||||
|
||||
@@ -829,7 +829,7 @@ bool Hd_AI_algo_hanQianCeLiang::AIdetect(cv::Mat img2D, QString mysaveKey, QStri
|
||||
// csvName.close();
|
||||
//}
|
||||
//sourceImg = cv::imread("D:\\mySN15-46-33-86.bmp",-1);
|
||||
//sourceImg = cv::imread("D:/1/2820698.bmp", -1);
|
||||
sourceImg = cv::imread("E:/628/hanqian/ORI_DA3442464_0_10-00-56-82.bmp", -1);
|
||||
cv::Mat Paint;
|
||||
sourceImg.copyTo(Paint);
|
||||
if(Paint.channels() == 1)
|
||||
@@ -837,24 +837,25 @@ bool Hd_AI_algo_hanQianCeLiang::AIdetect(cv::Mat img2D, QString mysaveKey, QStri
|
||||
|
||||
HObject ho_Image_L;
|
||||
HObject ho_Image_T;
|
||||
HTuple hv_Pix_T(0.02);
|
||||
HTuple hv_Pix_L(0.02);
|
||||
HTuple hv_Pix_T(0.038);
|
||||
HTuple hv_Pix_L(0.038);
|
||||
HTuple hv_Out_Vale_L;
|
||||
HTuple hv_Out_Line_L;
|
||||
HTuple hv_Out_Vale_T;
|
||||
HTuple hv_Out_Line_T;
|
||||
HTuple hv_Out_extremum_Value;
|
||||
HTuple hv_Makes;
|
||||
HTuple hv_Models(0);
|
||||
HTuple hv_Path("./halconFiles/");
|
||||
MatToHObject(sourceImg, &ho_Image_L);
|
||||
while (g_unionCalculate->getData(ho_Image_T) == false)
|
||||
QThread::msleep(1);
|
||||
_628_2_BeforeWelding_Distnce(ho_Image_L,ho_Image_T,hv_Pix_T,hv_Pix_L,
|
||||
_628_2_BeforeWelding_Distnce(ho_Image_L,ho_Image_T,hv_Pix_T,hv_Pix_L, hv_Models, hv_Path,
|
||||
&hv_Out_Vale_L,&hv_Out_Line_L,& hv_Out_Vale_T,
|
||||
&hv_Out_Line_T,& hv_Out_extremum_Value,&hv_Makes);
|
||||
if(hv_Makes.D() == 1)
|
||||
{
|
||||
double Out_Vale_L_0 = hv_Out_Vale_L[0].D();
|
||||
double Out_Vale_L_1 = hv_Out_Vale_L[1].D();
|
||||
double extremum_Value = hv_Out_extremum_Value.D();
|
||||
int Out_Line_L_length = hv_Out_Line_L.Length();
|
||||
int Out_Line_T_length = hv_Out_Line_T.Length();
|
||||
@@ -862,23 +863,25 @@ bool Hd_AI_algo_hanQianCeLiang::AIdetect(cv::Mat img2D, QString mysaveKey, QStri
|
||||
//发送到另一算法线程
|
||||
unionCalculate::calResult _calResult;
|
||||
_calResult.toLeft = hv_Out_Vale_T[0].D();
|
||||
_calResult.toDown = hv_Out_Vale_T[1].D();
|
||||
//_calResult.toDown = hv_Out_Vale_T[1].D();
|
||||
_calResult.extremumValue = extremum_Value;
|
||||
for (int i = 0; i < Out_Line_T_length; i++)
|
||||
_calResult.lines.push_back(hv_Out_Line_T[i].D());
|
||||
g_unionCalculate->insertResult(_calResult);
|
||||
|
||||
//Paint
|
||||
std::string text1 = "上间距:" + std::to_string(Out_Vale_L_1);
|
||||
text1 = text1.substr(0, text1.find(".") + 4) + "mm";
|
||||
putTextHusky(Paint,
|
||||
byteArrayToUnicode(QByteArray::fromStdString(text1)).toStdString().c_str(),
|
||||
cv::Point(50, 50), cv::Scalar(0, 0, 255), 280);
|
||||
std::string text2 = " 下间距:" + std::to_string(Out_Vale_L_0);
|
||||
//std::string text1 = "上间距:" + std::to_string(Out_Vale_L_1);
|
||||
//text1 = text1.substr(0, text1.find(".") + 4) + "mm";
|
||||
//putTextHusky(Paint,
|
||||
// byteArrayToUnicode(QByteArray::fromStdString(text1)).toStdString().c_str(),
|
||||
// cv::Point(50, 50), cv::Scalar(0, 0, 255), 280);
|
||||
std::string text2 = " 芯包间距:" + std::to_string(Out_Vale_L_0);
|
||||
|
||||
text2 = text2.substr(0, text2.find(".") + 4) + "mm";
|
||||
putTextHusky(Paint,
|
||||
byteArrayToUnicode(QByteArray::fromStdString(text2)).toStdString().c_str(),
|
||||
cv::Point(50, 300), cv::Scalar(0, 0, 255), 280);
|
||||
cv::Point(50, 50), cv::Scalar(0, 0, 255), 280);
|
||||
|
||||
std::string text3 = " 极间距:" + std::to_string(extremum_Value);
|
||||
text2 = text2.substr(0, text3.find(".") + 4) + "mm";
|
||||
putTextHusky(Paint,
|
||||
|
||||
@@ -816,7 +816,8 @@ bool Hd_AI_algo_hanQianCeLiang::AIdetect(cv::Mat img2D, QString mysaveKey, QStri
|
||||
obj.insert("SN", "mySN");
|
||||
obj.insert("DataTime", "myDataTime");
|
||||
|
||||
// sourceImg = cv::imread("D:/1/2813489.bmp", -1);
|
||||
sourceImg = cv::imread("E:/628/hanqian/ORI_DA3442353_0_10-00-56-47.bmp", -1);
|
||||
|
||||
cv::Mat Paint;
|
||||
sourceImg.copyTo(Paint);
|
||||
if (Paint.channels() == 1)
|
||||
@@ -835,18 +836,19 @@ bool Hd_AI_algo_hanQianCeLiang::AIdetect(cv::Mat img2D, QString mysaveKey, QStri
|
||||
if(_calResult.algoFailed == false)
|
||||
{
|
||||
//Paint
|
||||
std::string text1 = "上间距:" + std::to_string(_calResult.toLeft);
|
||||
std::string text1 = "芯包间距:" + std::to_string(_calResult.toLeft);
|
||||
text1 = text1.substr(0, text1.find(".") + 4) + "mm";
|
||||
putTextHusky(Paint,
|
||||
byteArrayToUnicode(QByteArray::fromStdString(text1)).toStdString().c_str(),
|
||||
cv::Point(50, 50), cv::Scalar(0, 0, 255), 280);
|
||||
std::string text2 = " 下间距:" + std::to_string(_calResult.toDown);
|
||||
text2 = text2.substr(0, text2.find(".") + 4) + "mm";
|
||||
putTextHusky(Paint,
|
||||
byteArrayToUnicode(QByteArray::fromStdString(text2)).toStdString().c_str(),
|
||||
cv::Point(50, 300), cv::Scalar(0, 0, 255), 280);
|
||||
//std::string text2 = " 芯包间距:" + std::to_string(_calResult.toDown);
|
||||
//text2 = text2.substr(0, text2.find(".") + 4) + "mm";
|
||||
//putTextHusky(Paint,
|
||||
// byteArrayToUnicode(QByteArray::fromStdString(text2)).toStdString().c_str(),
|
||||
// cv::Point(50, 300), cv::Scalar(0, 0, 255), 280);
|
||||
|
||||
std::string text3 = " 极间距:" + std::to_string(_calResult.extremumValue);
|
||||
text2 = text2.substr(0, text3.find(".") + 4) + "mm";
|
||||
text3 = text3.substr(0, text3.find(".") + 4) + "mm";
|
||||
putTextHusky(Paint,
|
||||
byteArrayToUnicode(QByteArray::fromStdString(text3)).toStdString().c_str(),
|
||||
cv::Point(50, 550), cv::Scalar(0, 0, 255), 280);
|
||||
|
||||
Vendored
BIN
Binary file not shown.
Vendored
+333
-129
@@ -8,59 +8,73 @@
|
||||
|
||||
using namespace HalconCpp;
|
||||
|
||||
#if 1 后端调用函数
|
||||
#if 1 后端调用函数
|
||||
|
||||
/*
|
||||
ho_Image:输入原图
|
||||
hv_out_Value:输出检测结果 1为铝,2为铜
|
||||
hv_Make:算法执行状态-1为算法NG,1为算法ok
|
||||
极性检测函数
|
||||
预焊三协机台
|
||||
ho_Image:输入原图
|
||||
hv_out_Value:输出检测结果 1为铝,2为铜
|
||||
hv_Make:算法执行状态-1为算法NG,1为算法ok
|
||||
极性检测函数
|
||||
预焊三协机台
|
||||
*/
|
||||
extern "C" __declspec(dllexport) void _stdcall _628_1_Polarity_detection(HObject ho_Image, HTuple* hv_out_Value, HTuple* hv_Make);
|
||||
|
||||
/*
|
||||
* ho_Image:输入图片(原图)
|
||||
* hv_NinePointDocument:九点文件的路径
|
||||
* hv_SetNumber:设置胶钉的最小个数
|
||||
* hv_Circle_Point:输出放钉孔的圆心x,圆心y,半径。数组形式
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行
|
||||
*hv_Out_Roboot1:吸嘴1-> 吸嘴编号,x绝对坐标,y绝对坐标
|
||||
* hv_Out_Roboot2:吸嘴2->吸嘴编号,x绝对坐标,y绝对坐标
|
||||
* hv_Out_Roboot3:吸嘴3->吸嘴编号,x绝对坐标,y绝对坐标
|
||||
* 机器人引导函数
|
||||
* 三协机台
|
||||
* ho_Image:输入图片(原图)
|
||||
* hv_NinePointDocument:九点文件的路径
|
||||
* hv_SetNumber:设置胶钉的最小个数
|
||||
* hv_Circle_Point:输出放钉孔的圆心x,圆心y,半径。数组形式
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行
|
||||
*hv_Out_Roboot1:吸嘴1-> 吸嘴编号,x绝对坐标,y绝对坐标
|
||||
* hv_Out_Roboot2:吸嘴2->吸嘴编号,x绝对坐标,y绝对坐标
|
||||
* hv_Out_Roboot3:吸嘴3->吸嘴编号,x绝对坐标,y绝对坐标
|
||||
* hv_StartRun: 1启动振动盘,2不启动振动盘
|
||||
* 机器人引导函数
|
||||
* 三协机台
|
||||
*/
|
||||
extern "C" __declspec(dllexport) void _stdcall _628_BootTheMachine(HObject ho_Image, HTuple hv_NinePointDocument, HTuple hv_SetNumber,
|
||||
HTuple* hv_Circle_Point, HTuple* hv_Make, HTuple* hv_Out_Roboot1, HTuple* hv_Out_Roboot2,HTuple* hv_Out_Roboot3);
|
||||
extern "C" __declspec(dllexport) void _stdcall _628_BootTheMachine(HObject ho_Image, HTuple hv_NinePointDocument, HTuple hv_SetNumber,
|
||||
HTuple* hv_Circle_Point, HTuple* hv_Make, HTuple* hv_Out_Roboot1, HTuple* hv_Out_Roboot2,
|
||||
HTuple* hv_Out_Roboot3, HTuple* hv_StartRun);
|
||||
|
||||
/*
|
||||
*ho_Image:输入图片(原图)
|
||||
* hv_Pix:像素精度
|
||||
* hv_out_line:输出直线坐标
|
||||
* hv_distance:输出测量值 ->高,宽。数组形式
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行
|
||||
* 铜极耳裁剪测量函数
|
||||
* 三协预焊机台
|
||||
*ho_Image:输入图片(原图)
|
||||
* hv_Pix:像素精度
|
||||
* hv_out_line:输出直线坐标
|
||||
* hv_distance:输出测量值 ->高,宽。数组形式
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行
|
||||
* 铜极耳裁剪测量函数
|
||||
* 三协预焊机台
|
||||
*/
|
||||
|
||||
extern "C" __declspec(dllexport) void _stdcall cs_628_jier_T(HObject ho_Image, HTuple hv_Pix, HTuple* hv_out_line, HTuple* hv_out_Soldering_line,
|
||||
extern "C" __declspec(dllexport) void _stdcall cs_628_jier_T(HObject ho_Image, HObject ho_seg, HTuple hv_Pix, HTuple* hv_out_line,
|
||||
HTuple* hv_out_Soldering_line, HTuple* hv_distance, HTuple* hv_Make);
|
||||
|
||||
/*
|
||||
*ho_Image:输入图片(原图)
|
||||
* hv_Pix:像素精度
|
||||
* hv_out_line:输出直线坐标
|
||||
* hv_distance:输出测量值 ->高,宽。数组形式
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行
|
||||
* 铝极耳裁剪测量函数
|
||||
* 三协预焊机台
|
||||
*/
|
||||
|
||||
extern "C" __declspec(dllexport) void _stdcall cs_628_jier_L(HObject ho_Image, HObject ho_seg, HTuple hv_Pix, HTuple* hv_out_line,
|
||||
HTuple* hv_distance, HTuple* hv_Make);
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* ho_Image:输入图片(原图)
|
||||
* hv_model:赋值为1时是基准标定模式,0为正常检测模式
|
||||
* hv_BenchmarkFile:基准标定文件的路径
|
||||
* hv_NinePointDocument:九点文件的路径
|
||||
*hv_CameraNumber:上钉相机编号
|
||||
* hv_out_Cirle:输出放钉孔的圆心x,圆心y,半径。数组形式
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行,输出为2为基准标定成功
|
||||
* hv_offset_x:x轴方向上相对于基准位置的偏差
|
||||
* hv_offset_y:y轴方向上相对于基准位置的偏差
|
||||
* 打钉钉引导函数
|
||||
* 三协的机台
|
||||
* ho_Image:输入图片(原图)
|
||||
* hv_model:赋值为1时是基准标定模式,0为正常检测模式
|
||||
* hv_BenchmarkFile:基准标定文件的路径
|
||||
* hv_NinePointDocument:九点文件的路径
|
||||
*hv_CameraNumber:上钉相机编号
|
||||
* hv_out_Cirle:输出放钉孔的圆心x,圆心y,半径。数组形式
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行,输出为2为基准标定成功
|
||||
* hv_offset_x:x轴方向上相对于基准位置的偏差
|
||||
* hv_offset_y:y轴方向上相对于基准位置的偏差
|
||||
* 打钉钉引导函数
|
||||
* 三协的机台
|
||||
*/
|
||||
|
||||
extern "C" __declspec(dllexport) void _stdcall _628_NailingPosition(HObject ho_Image, HTuple hv_model, HTuple hv_BenchmarkFile,
|
||||
@@ -69,47 +83,48 @@ extern "C" __declspec(dllexport) void _stdcall _628_NailingPosition(HObject ho_I
|
||||
|
||||
|
||||
/*
|
||||
ho_Image:输入原图
|
||||
hv_out_Value:输出检测结果[1,1] .1为铝,[2,2] 2为铜
|
||||
hv_Make:算法执行状态-1为算法NG,1为算法ok
|
||||
极性检测函数
|
||||
终焊三协机台
|
||||
ho_Image:输入原图
|
||||
hv_out_Value:输出检测结果[1,1] .1为铝,[2,2] 2为铜 ,0为无料
|
||||
hv_Make:算法执行状态-1为算法NG,1为算法ok
|
||||
极性检测函数
|
||||
终焊三协机台
|
||||
*/
|
||||
extern "C" __declspec(dllexport) void _stdcall _628_2_Polarity_detection(HObject ho_Image, HTuple* hv_out_Value, HTuple* hv_Make);
|
||||
|
||||
/*
|
||||
* ho_Image_L:输入图片铝
|
||||
* ho_Image_T:输入图片铜
|
||||
* hv_Pix_T:铜极像素精度
|
||||
* hv_Pix_L:铝极像素精度
|
||||
* hv_Out_Vale_L:输出铝极测量值包括两个值
|
||||
* hv_Out_Line_L:输出铝极划线坐标
|
||||
* hv_Out_Vale_T:输出铝极测量值包括两个值
|
||||
* hv_Out_Line_T:输出铜极极划线坐标
|
||||
* hv_Out_extremum_Value:输出两极之间的距离
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行
|
||||
* 预焊焊前测量函数
|
||||
* 三协的机台
|
||||
* ho_Image_L:输入图片铝
|
||||
* ho_Image_T:输入图片铜
|
||||
* hv_Pix_T:铜极像素精度
|
||||
* hv_Pix_L:铝极像素精度
|
||||
* hv_Out_Vale_L:输出铝极测量值包括两个值
|
||||
* hv_Out_Line_L:输出铝极划线坐标
|
||||
* hv_Out_Vale_T:输出铝极测量值包括两个值
|
||||
* hv_Out_Line_T:输出铜极极划线坐标
|
||||
* hv_Out_extremum_Value:输出两极之间的距离
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行
|
||||
* 预焊焊前测量函数
|
||||
* 三协的机台
|
||||
*/
|
||||
extern "C" __declspec(dllexport) void _stdcall _628_2_BeforeWelding_Distnce(HObject ho_Image_L, HObject ho_Image_T, HTuple hv_Pix_T,
|
||||
HTuple hv_Pix_L, HTuple* hv_Out_Vale_L, HTuple* hv_Out_Line_L, HTuple* hv_Out_Vale_T,
|
||||
HTuple* hv_Out_Line_T, HTuple* hv_Out_extremum_Value, HTuple* hv_Makes);
|
||||
HTuple hv_Pix_L, HTuple hv_Models, HTuple hv_Path, HTuple* hv_Out_Vale_L, HTuple* hv_Out_Line_L,
|
||||
HTuple* hv_Out_Vale_T, HTuple* hv_Out_Line_T, HTuple* hv_Out_extremum_Value,
|
||||
HTuple* hv_Makes);
|
||||
|
||||
/*
|
||||
* ho_Image :输入图片铝极
|
||||
* ho_ImageSeg :输入图片seg图(二值图)
|
||||
* hv_Pix : 铝极像素精度
|
||||
* hv_Out_TopLeft_Line : 左上输出线的端点坐标
|
||||
* hv_Out_TopLeft_Value :左上输出的测量值(2个值)
|
||||
* hv_Out_TopRight_Line :右上输出线的端点坐标
|
||||
* hv_Out_TopRight_Value :右上输出的测量值(2个值)
|
||||
* hv_Out_BottomLeft_Line :左下输出线的端点坐标
|
||||
* hv_Out_BottomLeft_Value :左下输出的测量值(2个值)
|
||||
** hv_Out_BottomRight_Line :右下输出线的端点坐标
|
||||
* hv_Out_BottomRight_Value :右下输出的测量值(2个值)
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行
|
||||
* 预焊焊后测量铝极函数
|
||||
* 三协的机台
|
||||
* ho_Image :输入图片铝极
|
||||
* ho_ImageSeg :输入图片seg图(二值图)
|
||||
* hv_Pix : 铝极像素精度
|
||||
* hv_Out_TopLeft_Line : 左上输出线的端点坐标
|
||||
* hv_Out_TopLeft_Value :左上输出的测量值(2个值)
|
||||
* hv_Out_TopRight_Line :右上输出线的端点坐标
|
||||
* hv_Out_TopRight_Value :右上输出的测量值(2个值)
|
||||
* hv_Out_BottomLeft_Line :左下输出线的端点坐标
|
||||
* hv_Out_BottomLeft_Value :左下输出的测量值(2个值)
|
||||
** hv_Out_BottomRight_Line :右下输出线的端点坐标
|
||||
* hv_Out_BottomRight_Value :右下输出的测量值(2个值)
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行
|
||||
* 预焊焊后测量铝极函数
|
||||
* 三协的机台
|
||||
*/
|
||||
|
||||
extern "C" __declspec(dllexport) void _stdcall _628_AfterWelding_Distance_L(HObject ho_Image, HObject ho_ImageSeg, HTuple hv_Pix,
|
||||
@@ -118,20 +133,20 @@ extern "C" __declspec(dllexport) void _stdcall _628_AfterWelding_Distance_L(HObj
|
||||
HTuple* hv_Out_BottomRight_Line, HTuple* hv_Out_BottomRight_Value, HTuple* hv_Make);
|
||||
|
||||
/*
|
||||
* ho_Image :输入图片铝极
|
||||
* ho_ImageSeg :输入图片seg图(二值图)
|
||||
* hv_Pix : 铝极像素精度
|
||||
* hv_Out_TopLeft_Line : 左上输出线的端点坐标
|
||||
* hv_Out_TopLeft_Value :左上输出的测量值(2个值)
|
||||
* hv_Out_TopRight_Line :右上输出线的端点坐标
|
||||
* hv_Out_TopRight_Value :右上输出的测量值(2个值)
|
||||
* hv_Out_BottomLeft_Line :左下输出线的端点坐标
|
||||
* hv_Out_BottomLeft_Value :左下输出的测量值(2个值)
|
||||
** hv_Out_BottomRight_Line :右下输出线的端点坐标
|
||||
* hv_Out_BottomRight_Value :右下输出的测量值(2个值)
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行
|
||||
* 预焊焊后测量铜极函数
|
||||
* 三协的机台
|
||||
* ho_Image :输入图片铝极
|
||||
* ho_ImageSeg :输入图片seg图(二值图)
|
||||
* hv_Pix : 铝极像素精度
|
||||
* hv_Out_TopLeft_Line : 左上输出线的端点坐标
|
||||
* hv_Out_TopLeft_Value :左上输出的测量值(2个值)
|
||||
* hv_Out_TopRight_Line :右上输出线的端点坐标
|
||||
* hv_Out_TopRight_Value :右上输出的测量值(2个值)
|
||||
* hv_Out_BottomLeft_Line :左下输出线的端点坐标
|
||||
* hv_Out_BottomLeft_Value :左下输出的测量值(2个值)
|
||||
** hv_Out_BottomRight_Line :右下输出线的端点坐标
|
||||
* hv_Out_BottomRight_Value :右下输出的测量值(2个值)
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行
|
||||
* 预焊焊后测量铜极函数
|
||||
* 三协的机台
|
||||
*/
|
||||
|
||||
extern "C" __declspec(dllexport) void _stdcall _628_AfterWelding_Distance_T(HObject ho_Image, HObject ho_ImageSeg, HTuple hv_Pix,
|
||||
@@ -139,6 +154,96 @@ extern "C" __declspec(dllexport) void _stdcall _628_AfterWelding_Distance_T(HObj
|
||||
HTuple* hv_Out_TopRight_Value, HTuple* hv_Out_BottomLeft_Line, HTuple* hv_Out_BottomLeft_Value,
|
||||
HTuple* hv_Out_BottomRight_Line, HTuple* hv_Out_BottomRight_Value, HTuple* hv_Make);
|
||||
|
||||
/*
|
||||
* ho_Image :输入图片
|
||||
* hv_Out_Rectangle : 输出矩形的两个顶点坐标
|
||||
* hv_Text :输出检测信息字符串格式
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行
|
||||
*软连接热熔工位函数
|
||||
* 三协的机台
|
||||
*/
|
||||
extern "C" __declspec(dllexport) void _stdcall _628_3_TopCoverMelted(HObject ho_Image, HTuple* hv_Out_Rectangle, HTuple* hv_Make,
|
||||
HTuple* hv_Text);
|
||||
|
||||
/*
|
||||
* ho_Image_L :输入图片(铝)
|
||||
* ho_Image_T :输入图片(铜)
|
||||
* hv_Pix_L :铝极相机像素精度
|
||||
* hv_Pix_T :铜极相机像素精度
|
||||
* hv_Out_Line_T :铜极输出线的端点坐标(需判断个数)
|
||||
* hv_Out_Point_T :铜极输出中心圆的中心坐标及半径
|
||||
* hv_Out_Chamfering_T :铜极输出倒角值
|
||||
* hv_Distances_T :铜极输出上下,左右距离
|
||||
* hv_Out_Line_L :铝极输出线的端点坐标(需判断个数)
|
||||
* hv_Out_Point_L :铝极输出中心圆的中心坐标及半径
|
||||
* hv_Out_Chamfering_L :铝极输出倒角值
|
||||
* hv_Distances_L :铝极输出上下,左右距离
|
||||
* hv_Out_InterpoleValue :输出两极柱之间距离
|
||||
* hv_Makes:输出-1为算法错误,输出1为算法正常执行
|
||||
*软连接极柱测量工位函数
|
||||
* 三协的机台
|
||||
*/
|
||||
|
||||
extern "C" __declspec(dllexport) void _stdcall _628_3_PoleDetections(HObject ho_Image_L, HObject ho_Image_T, HTuple hv_Pix_L,
|
||||
HTuple hv_Pix_T, HTuple* hv_Out_Line_T, HTuple* hv_Out_Point_T, HTuple* hv_Out_Chamfering_T,
|
||||
HTuple* hv_Distances_T, HTuple* hv_Out_Line_L, HTuple* hv_Out_Point_L, HTuple* hv_Out_Chamfering_L,
|
||||
HTuple* hv_Distances_L, HTuple* hv_Out_InterpoleValue, HTuple* hv_Makes);
|
||||
/*
|
||||
* ho_Image :输入图片
|
||||
* hv_Pix :相机像素精度
|
||||
* hv_Distance_Value :间距测量值
|
||||
* hv_Out_Point :输出防爆阀中心点和二维码中心点距离
|
||||
* hv_Makes:输出-1为算法错误,输出1为算法正常执行
|
||||
*软连接防爆阀与二维码之间距离测量函数
|
||||
* 三协的机台
|
||||
*/
|
||||
extern "C" __declspec(dllexport) void _stdcall _628_3_ExplosionProofValves(HObject ho_Image, HTuple hv_Pix, HTuple* hv_Distance_Value,
|
||||
HTuple* hv_Out_Point, HTuple* hv_Make);
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* ho_Image :输入图片
|
||||
* hv_Pix :相机像素精度
|
||||
* hv_Distances :间距测量值两个值
|
||||
* hv_Out_line :输出测量线段的端点坐标(判断长度)
|
||||
* hv_Makes:输出-1为算法错误,输出1为算法正常执行
|
||||
*软连接3-1焊前定位
|
||||
* 三协的机台
|
||||
*/
|
||||
extern "C" __declspec(dllexport) void _stdcall _628_3_PreWeldMeasurement(HObject ho_Image, HTuple hv_Pix, HTuple* hv_Distances,
|
||||
HTuple* hv_Out_line, HTuple* hv_Make);
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* ho_Image :输入图片
|
||||
* hv_Pix :相机像素精度
|
||||
* hv_Out_distance :间距测量值1个值
|
||||
* hv_Out_line :输出测量线段的端点坐标(判断长度)
|
||||
* hv_Makes:输出-1为算法错误,输出1为算法正常执行
|
||||
* 三协3-3机台,马甲检测
|
||||
*/
|
||||
extern "C" __declspec(dllexport) void _stdcall _628_3_FrontVest(HObject ho_Image, HTuple hv_Pix, HTuple* hv_Out_distance,
|
||||
HTuple* hv_Make, HTuple* hv_Out_Line);
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* ho_Image :输入图片
|
||||
* hv_Pix :相机像素精度
|
||||
* hv_Out_distance :间距测量值1个值
|
||||
* hv_Out_line :输出测量线段的端点坐标(判断长度)
|
||||
* hv_Makes:输出-1为算法错误,输出1为算法正常执行
|
||||
* 三协3-3机台,马甲检测
|
||||
*/
|
||||
|
||||
extern "C" __declspec(dllexport) void _stdcall _628_3_BackVest(HObject ho_Image, HTuple hv_Pix, HTuple* hv_Out_distance, HTuple* hv_Make,
|
||||
HTuple* hv_Out_Line);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -157,17 +262,17 @@ extern "C" __declspec(dllexport) void _stdcall _628_AfterWelding_Distance_T(HObj
|
||||
|
||||
|
||||
/*
|
||||
* ho_Image:输入图片(原图)
|
||||
* hv_model:赋值为1时是基准标定模式,0为正常检测模式
|
||||
* hv_BenchmarkFile:基准标定文件的路径
|
||||
* hv_NinePointDocument:九点文件的路径
|
||||
*hv_CameraNumber:上钉相机编号
|
||||
* hv_out_Cirle:输出放钉孔的圆心x,圆心y,半径。数组形式
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行,输出为2为基准标定成功
|
||||
* hv_offset_x:x轴方向上相对于基准位置的偏差
|
||||
* hv_offset_y:y轴方向上相对于基准位置的偏差
|
||||
* 上钉引导函数
|
||||
* 赢合的机台
|
||||
* ho_Image:输入图片(原图)
|
||||
* hv_model:赋值为1时是基准标定模式,0为正常检测模式
|
||||
* hv_BenchmarkFile:基准标定文件的路径
|
||||
* hv_NinePointDocument:九点文件的路径
|
||||
*hv_CameraNumber:上钉相机编号
|
||||
* hv_out_Cirle:输出放钉孔的圆心x,圆心y,半径。数组形式
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行,输出为2为基准标定成功
|
||||
* hv_offset_x:x轴方向上相对于基准位置的偏差
|
||||
* hv_offset_y:y轴方向上相对于基准位置的偏差
|
||||
* 上钉引导函数
|
||||
* 赢合的机台
|
||||
*/
|
||||
|
||||
extern "C" __declspec(dllexport) void _stdcall _628_SealingNails(HObject ho_Image, HTuple hv_model, HTuple hv_BenchmarkFile,
|
||||
@@ -175,60 +280,133 @@ extern "C" __declspec(dllexport) void _stdcall _628_SealingNails(HObject ho_Ima
|
||||
HTuple* hv_offset_x, HTuple* hv_offset_y);
|
||||
|
||||
/*
|
||||
* ho_Image:输入图片(原图)
|
||||
* hv_model:赋值为1时是基准标定模式,0为正常检测模式
|
||||
* hv_BenchmarkFile:基准标定文件的路径
|
||||
* hv_NinePointDocument:九点文件的路径
|
||||
*hv_CameraNumber:预焊相机编号
|
||||
* hv_out_Cirle:输出放钉孔的圆心x,圆心y,半径。数组形式
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行,输出为2为基准标定成功
|
||||
* hv_offset_x:x轴方向上相对于基准位置的偏差
|
||||
* hv_offset_y:y轴方向上相对于基准位置的偏差
|
||||
* hv_Text:输出报警信息包括(ok,无钉,翘钉,反钉)
|
||||
* 赢合机台
|
||||
* 预焊函数
|
||||
* ho_Image:输入图片(原图)
|
||||
* hv_model:赋值为1时是基准标定模式,0为正常检测模式
|
||||
* hv_BenchmarkFile:基准标定文件的路径
|
||||
* hv_NinePointDocument:九点文件的路径
|
||||
*hv_CameraNumber:预焊相机编号
|
||||
* hv_out_Cirle:输出放钉孔的圆心x,圆心y,半径。数组形式
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行,输出为2为基准标定成功
|
||||
* hv_offset_x:x轴方向上相对于基准位置的偏差
|
||||
* hv_offset_y:y轴方向上相对于基准位置的偏差
|
||||
* hv_Text:输出报警信息包括(ok,无钉,翘钉,反钉)
|
||||
* 赢合机台
|
||||
* 预焊函数
|
||||
*/
|
||||
extern "C" __declspec(dllexport) void _stdcall _628_yuhan(HObject ho_Image, HTuple hv_Model, HTuple hv_BenchmarkFile, HTuple hv_NinePointDocument,
|
||||
HTuple hv_CameraNumber, HTuple* hv_out_Cirle, HTuple* hv_Make, HTuple* hv_offset_x,
|
||||
HTuple* hv_offset_y, HTuple* hv_Text);
|
||||
|
||||
/*
|
||||
* ho_Image:输入图片(原图)
|
||||
* hv_model:赋值为1时是基准标定模式,0为正常检测模式
|
||||
* hv_BenchmarkFile:基准标定文件的路径
|
||||
* hv_NinePointDocument:九点文件的路径
|
||||
*hv_CameraNumber:预焊相机编号
|
||||
* hv_out_Cirle:输出放钉孔的圆心x,圆心y,半径。数组形式
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行,输出为2为基准标定成功
|
||||
* hv_offset_x:x轴方向上相对于基准位置的偏差
|
||||
* hv_offset_y:y轴方向上相对于基准位置的偏差
|
||||
* 终焊函数
|
||||
* 赢合的机台
|
||||
* ho_Image:输入图片(原图)
|
||||
* hv_model:赋值为1时是基准标定模式,0为正常检测模式
|
||||
* hv_BenchmarkFile:基准标定文件的路径
|
||||
* hv_NinePointDocument:九点文件的路径
|
||||
*hv_CameraNumber:预焊相机编号
|
||||
* hv_out_Cirle:输出放钉孔的圆心x,圆心y,半径。数组形式
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行,输出为2为基准标定成功
|
||||
* hv_offset_x:x轴方向上相对于基准位置的偏差
|
||||
* hv_offset_y:y轴方向上相对于基准位置的偏差
|
||||
* 终焊函数
|
||||
* 赢合的机台
|
||||
*/
|
||||
extern "C" __declspec(dllexport) void _stdcall _628_FinalWelding(HObject ho_Image, HTuple hv_model, HTuple hv_BenchmarkFile,
|
||||
HTuple hv_NinePointDocument, HTuple hv_CameraNumber, HTuple* hv_out_Cirle, HTuple* hv_Make,
|
||||
HTuple* hv_offset_x, HTuple* hv_offset_y);
|
||||
|
||||
/*
|
||||
* ho_Image1:输入图片(原图)
|
||||
* ho_Image2:输入图片(原图)
|
||||
* ho_Image3:输入图片(原图)
|
||||
* ho_Image4:输入图片(原图)
|
||||
*ho_Out_Image1:输出图片1
|
||||
* ho_Out_image2:输出图片2
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行,输出为2为基准标定成功
|
||||
* hv_sacats:光源与光轴夹角
|
||||
* hv_Tilts:光源安装位置
|
||||
* ho_Image1:输入图片(原图)
|
||||
* ho_Image2:输入图片(原图)
|
||||
* ho_Image3:输入图片(原图)
|
||||
* ho_Image4:输入图片(原图)
|
||||
*ho_Out_Image1:输出图片1
|
||||
* ho_Out_image2:输出图片2
|
||||
* hv_Make:输出-1为算法错误,输出1为算法正常执行,输出为2为基准标定成功
|
||||
* hv_sacats:光源与光轴夹角
|
||||
* hv_Tilts:光源安装位置
|
||||
*/
|
||||
|
||||
extern "C" __declspec(dllexport) void _stdcall _628_25D(HObject ho_Image1, HObject ho_Image2, HObject ho_Image3, HObject ho_Image4,
|
||||
HObject* ho_Out_Image1, HObject* ho_Out_image2, HTuple hv_sacats, HTuple hv_Tilts,
|
||||
HTuple* hv_Make);
|
||||
|
||||
//Function Name: Cal_Defect_Height
|
||||
//Author:
|
||||
//Description: 2D获取缺陷后, 基于特征点的位置关系, 建立2D和3D的映射关系.
|
||||
//Input: in_Image2: 密封钉区域的2D二值化的图像(bmp),,
|
||||
// in_Image3: 3D深度图像(tiff),
|
||||
// in_xResolution: x向精度(mm/pix)
|
||||
// in_yResolution: y向精度(mm/pix),
|
||||
// in_zResolution: Z向精度(mm/pix)
|
||||
// in_DefectLocation: 2d图像缺陷坐标点位置, 每四个一组,
|
||||
// in_DefectLocation[0]:缺陷外接矩形的X向坐标(pix)
|
||||
// in_DefectLocation[1]:缺陷外接矩形的y向坐标(pix)
|
||||
// in_DefectLocation[2]:缺陷外接矩形的宽度width(pix)
|
||||
// in_DefectLocation[3]:缺陷外接矩形的高度height(pix)
|
||||
// in_FilePath, 矩阵martix文件路径,
|
||||
// in_offsetValue, 位置补偿值,
|
||||
// in_offsetValue[0]: 左工位X向补偿值(pix)
|
||||
// in_offsetValue[1]: 左工位Y向补偿值(pix)
|
||||
// in_offsetValue[2]: 右工位X向补偿值(pix)
|
||||
// in_offsetValue[3]: 右工位Y向补偿值(pix)
|
||||
// in_HoffsetValue, 缺陷高度补偿值(正值,单位:mm)
|
||||
//output: out_Height: 缺陷的高度(mm),
|
||||
// out_Flag: 算法执行的标志位, 0: 算法执行异常 1:算法执行ok
|
||||
// 赢合机台
|
||||
//verion change log: XXX 2024-10-22 V1.1 Create new function
|
||||
|
||||
extern "C" __declspec(dllexport) void _stdcall Cal_Defect_Height(HObject ho_in_Image2, HObject ho_in_Image3, HTuple hv_in_xResolution,
|
||||
HTuple hv_in_yResolution, HTuple hv_in_zResolution, HTuple hv_in_DefectLocation,
|
||||
HTuple hv_in_FilePath, HTuple hv_in_OffsetValue, HTuple hv_in_HoffsetValue, HTuple* hv_out_Height,
|
||||
HTuple* hv_out_Angle, HTuple* hv_out_Flag);
|
||||
|
||||
//**********************************************************************
|
||||
//Function Name: Cal_Long_Coatingcover_Dist_Left
|
||||
//Author:
|
||||
//Description: 计算膜到端盖的距离,
|
||||
//Input(HObject): in_Image,滤波处理后的抓边图像
|
||||
//Input(HTuple): in_Resolution, 相机精度(mm/pix)
|
||||
//output(HTuple): out_Maxdistance, 膜到端盖的最大距离(mm)
|
||||
// out_Mindistance, 膜到端盖的最小距离(mm)
|
||||
// out_Line, 基准线位置(x1,y1,x2,y2)
|
||||
// out_X, 膜的x点坐标集
|
||||
// out_Y, 膜的y点坐标集
|
||||
// out_Flag: 执行成功位标识 1, 算法执行成功 2, 算法执行ng
|
||||
// out_NgTails: NG的明细
|
||||
//verion change log: 胡汉兵 2024-07-11 V1.1 Create new function .
|
||||
//**********************************************************************
|
||||
|
||||
extern "C" __declspec(dllexport) void _stdcall Cal_Long_Coatingcover_Dist_Left(HObject ho_in_Image, HTuple hv_in_Resolution,
|
||||
HTuple* hv_out_Maxdistance, HTuple* hv_out_Mindistance, HTuple* hv_out_Line,
|
||||
HTuple* hv_out_X, HTuple* hv_out_Y, HTuple* hv_out_Flag, HTuple* hv_out_Ngtails);
|
||||
|
||||
//**********************************************************************
|
||||
//Function Name: Cal_Long_Coatingcover_Dist_Right
|
||||
//Author:
|
||||
//Description: 计算膜到端盖的距离,
|
||||
//Input(HObject): in_Image,滤波处理后的抓边图像
|
||||
//Input(HTuple): in_Resolution, 相机精度(mm/pix)
|
||||
//output(HTuple): out_Maxdistance, 膜到端盖的最大距离(mm)
|
||||
// out_Mindistance, 膜到端盖的最小距离(mm)
|
||||
// out_Line, 基准线位置(x1,y1,x2,y2)
|
||||
// out_X, 膜的x点坐标集
|
||||
// out_Y, 膜的y点坐标集
|
||||
// out_Flag: 执行成功位标识 1, 算法执行成功 2, 算法执行ng
|
||||
// out_NgTails: NG的明细
|
||||
//verion change log: 胡汉兵 2024-10-26 V1.1 Create new function .
|
||||
//**********************************************************************
|
||||
|
||||
extern "C" __declspec(dllexport) void _stdcall Cal_Long_Coatingcover_Dist_Right(HObject ho_in_Image, HTuple hv_in_Resolution,
|
||||
HTuple* hv_out_Maxdistance, HTuple* hv_out_Mindistance, HTuple* hv_out_Line,
|
||||
HTuple* hv_out_X, HTuple* hv_out_Y, HTuple* hv_out_Flag, HTuple* hv_out_Ngtails);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#if 1 halcon调用函数
|
||||
#if 1 halcon调用函数
|
||||
|
||||
void gen_arrow_contour_xld(HObject* ho_Arrow, HTuple hv_Row1, HTuple hv_Column1,
|
||||
HTuple hv_Row2, HTuple hv_Column2, HTuple hv_HeadLength, HTuple hv_HeadWidth);
|
||||
@@ -263,6 +441,32 @@ void BeforeWelding_L(HObject ho_Image_L, HTuple hv_Pix_T, HTuple* hv_Make, HTupl
|
||||
void BeforeWelding_T(HObject ho_Image_T, HTuple hv_Pix_T, HTuple* hv_Make, HTuple* hv_Out_Line,
|
||||
HTuple* hv_Out_Vale, HTuple* hv_Out_PointRow, HTuple* hv_Out_PointCol);
|
||||
|
||||
void Get_CentreLine(HObject ho_Line1, HObject ho_Line2, HObject ho_Image, HTuple hv_Line1_EndPoint,
|
||||
HTuple hv_Line2_EndPoint, HTuple* hv_Out_Rows, HTuple* hv_Out_Cols, HTuple* hv_Make);
|
||||
|
||||
|
||||
|
||||
void Cal_PointCould_HeightValue(HObject ho_Tmp_Region, HObject ho_Zero_Region, HObject ho_XImageScaled,
|
||||
HObject ho_YImageScaled, HObject ho_ZImageScaled, HTuple hv_HeightPointPerenct,
|
||||
HTuple* hv_Out_Mean, HTuple* hv_Out_Max, HTuple* hv_Out_Min, HTuple* hv_Out_Height,
|
||||
HTuple* hv_Out_Flag, HTuple* hv_Out_NgTails);
|
||||
|
||||
void cs_628_PoleDetection(HObject ho_Image, HTuple hv_Pix, HTuple* hv_Distances,
|
||||
HTuple* hv_UP_Down_Point, HTuple* hv_life_Ren_Point, HTuple* hv_Point, HTuple* hv_Chamfering,
|
||||
HTuple* hv_Make);
|
||||
|
||||
void Get_Rectangle2_Corner(HObject ho_Rectangle, HTuple* hv_out_Row, HTuple* hv_out_Col);
|
||||
|
||||
void Get_LineParameters(HObject ho_in_Image, HObject* ho_out_Contour, HTuple hv_in_Parameters,
|
||||
HTuple* hv_out_Parameters, HTuple* hv_out_Flag, HTuple* hv_out_NgTails);
|
||||
|
||||
void rake1(HObject ho_Image, HObject * ho_Regions, HTuple hv_InParameters, HTuple * hv_ResultRow,
|
||||
HTuple * hv_ResultColumn);
|
||||
|
||||
void Get_CircleParameters(HObject ho_in_Image, HObject* ho_out_Contour, HTuple hv_in_Parameters,
|
||||
HTuple* hv_out_Flag, HTuple* hv_out_NgTails, HTuple* hv_out_Parameters);
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Vendored
BIN
Binary file not shown.
Reference in New Issue
Block a user