1. 优化抠图算法:选取由深到浅和由浅到深中最优的圆作为结果 2. 能够接收PLC发送的负数偏距

master
qushuailong 4 years ago
parent 32eec2134c
commit 7ac4fc6d87

Binary file not shown.

Binary file not shown.

@ -81,7 +81,7 @@ int CAlgorithmFluorescence::IImageAnalysis(class IImageObject* pImgObj, TP_ALGOR
int ratioType = vMap.value("RatioType").toInt();//偏距检测模式 启用方式 int ratioType = vMap.value("RatioType").toInt();//偏距检测模式 启用方式
double ratioVal = vMap.value("Ratio").toDouble();//偏距系数 double ratioVal = vMap.value("Ratio").toDouble();//偏距系数
bool bEqual = vMap.value("bEqual").toBool();//使用使用图像增强 bool bEqual = vMap.value("bEqual").toBool();//是否使用图像增强
int filterSize = vMap.value("filterSize").toInt();//过滤圆大小 int filterSize = vMap.value("filterSize").toInt();//过滤圆大小
cParam.CirclePolarity = vMap.value("Circle_Polarity",0).toInt(); cParam.CirclePolarity = vMap.value("Circle_Polarity",0).toInt();
cParam.CircleACThres = vMap.value("Circle_ACThres",3).toInt(); cParam.CircleACThres = vMap.value("Circle_ACThres",3).toInt();
@ -240,9 +240,9 @@ QString CAlgorithmFluorescence::bestMatch(const QMap<QString, IWheelModel*>* mod
double minRatio = pWheel->getMinRotia(); double minRatio = pWheel->getMinRotia();
double maxRatio = pWheel->getMaxRotia(); double maxRatio = pWheel->getMaxRotia();
if (curRatioVal > 0 && minRatio > 0 && maxRatio > 0) if (curRatioVal != 0)
{ {
if (curRatioVal < minRatio || curRatioVal > maxRatio) if ((curRatioVal < minRatio || curRatioVal > maxRatio) && maxRatio > minRatio)
{ {
nIndex++; nIndex++;
continue; continue;

@ -14,7 +14,6 @@ ImageProcess::ImageProcess()
{ {
} }
ImageProcess::~ImageProcess() ImageProcess::~ImageProcess()
{ {
} }
@ -63,9 +62,11 @@ cv::Mat ImageProcess::findCircle(const Mat &srcImg, Point2f& center, double &rad
cv::resize(src, detectImg, cv::Size(src.cols / REAIZE, src.rows / REAIZE)); cv::resize(src, detectImg, cv::Size(src.cols / REAIZE, src.rows / REAIZE));
int bBaseX = detectImg.cols; int bBaseX = detectImg.cols;
int bBaseY = detectImg.rows; int bBaseY = detectImg.rows;
if(bEqual == true) if (bEqual == true)
{
equalizeHist(detectImg, detectImg); equalizeHist(detectImg, detectImg);
detectImg = _EnhanImg_sharpen(detectImg); detectImg = _EnhanImg_sharpen(detectImg);
}
EDCircles edcircles(detectImg); EDCircles edcircles(detectImg);
vector<mCircle> EDCircle = edcircles.getCircles(); vector<mCircle> EDCircle = edcircles.getCircles();
@ -108,16 +109,98 @@ cv::Mat ImageProcess::findCircle(const Mat &srcImg, Point2f& center, double &rad
return DetectCircle(srcImg, Mat(), center, radius, bEqual, cParam); return DetectCircle(srcImg, Mat(), center, radius, bEqual, cParam);
} }
else { else {
center.x = centerX; center.x = 0;
center.y = centerY; center.y = 0;
radius = 0; radius = 0;
return DetectCircle(srcImg, Mat(), center, radius, bEqual, cParam); return DetectCircle(srcImg, Mat(), center, radius, bEqual, cParam);
} }
} }
Mat ImageProcess::DetectCircle(Mat srcImg, Mat background, Point2f& center, double& radius, bool bEqual, const CircleParam& cParam) //Mat ImageProcess::DetectCircle(Mat srcImg, Mat background, Point2f& center, double& radius, bool bEqual, const CircleParam& cParam)
//{
// Mat img;
// if (!background.empty()) {
// img = getForeImage(srcImg, background);
// }
// else {
// img = srcImg;
// }
// Mat detectImg;
// if (bEqual == true) {
// equalizeHist(img, detectImg);
// }
// else {
// detectImg = img;
// }
//
// CircleDetector cd;
// cd.setAlgoType(CircleDetector::PeakCircle);
// cd.setEdgeWidth(cParam.CircleEdgeWidth);
// if(cParam.CirclePolarity == 0)
// cd.setPolarity(Polarity::Black2White);
// else
// cd.setPolarity(Polarity::White2Black);
//
// cd.setFindBy(FindBy::Best);
// if (center.x == 0 || center.y == 0)
// {
// center.x = img.cols / 2;
// center.y = img.rows / 2;
// }
// int rY = img.rows - center.y;
// int rX = img.cols - center.x;
// int min_dify = center.y > rY ? rY : center.y;
// int min_difx = center.x > rX ? rX : center.x;
// int maxRadius = abs(abs(min_difx > min_dify ? min_dify : min_difx)-50);
// double difRadiusMin = radius - 150;
// double difRadiusMax = radius + 250;
// if (difRadiusMin <= 0)
// {
// difRadiusMin = cParam.filterSize;
// difRadiusMax = maxRadius;
// }
//
// //控制范围,不让检测越界
// //if (difRadiusMin < cParam.filterSize)
// difRadiusMin = cParam.filterSize;
// //if (difRadiusMax > maxRadius)
// difRadiusMax = maxRadius;
// if (difRadiusMin > difRadiusMax)
// difRadiusMin = 0;
//
// cd.setRadii(difRadiusMin, difRadiusMax);
// cd.setACThres(cParam.CircleACThres);
// vector<float> allScores;
// Vec3f bestCircle;
// float bestScore = cd.detectBest(detectImg, Point2f(center.x, center.y), bestCircle, &allScores);
// if (abs(bestScore) <= FLT_EPSILON || bestCircle == Vec3f::zeros()) {
// center.x = 0;
// center.y = 0;
// radius = 0;
// return Mat();
// }
//
// Point2f cen(bestCircle[0], bestCircle[1]);
// double r = bestCircle[2];
// Rect rect;
// rect.x = cen.x - r;
// rect.y = cen.y - r;
// if (rect.x < 0)
// rect.x = 0;
// if (rect.y < 0)
// rect.y = 0;
// rect.width = 2 * r;
// rect.height = 2 * r;
// Mat s = srcImg(rect);
// center = cen;
// radius = r;
// return s;
//}
//分别使用从深到浅和从浅到深检测圆,取效果较好的作为结果
cv::Mat ImageProcess::DetectCircle(Mat srcImg, Mat background, Point2f& center, double& radius, bool bEqual, const CircleParam& cParam)
{ {
Mat img; cv::Mat img;
if (!background.empty()) { if (!background.empty()) {
img = getForeImage(srcImg, background); img = getForeImage(srcImg, background);
} }
@ -127,19 +210,15 @@ Mat ImageProcess::DetectCircle(Mat srcImg, Mat background, Point2f& center, doub
Mat detectImg; Mat detectImg;
if (bEqual == true) { if (bEqual == true) {
equalizeHist(img, detectImg); equalizeHist(img, detectImg);
detectImg = _EnhanImg_sharpen(detectImg);
} }
else { else {
detectImg = img; detectImg = img;
} }
CircleDetector cd; CircleDetector cd;
cd.setAlgoType(CircleDetector::PeakCircle); cd.setAlgoType(CircleDetector::PeakCircle);
cd.setEdgeWidth(cParam.CircleEdgeWidth); cd.setEdgeWidth(cParam.CircleEdgeWidth);
if(cParam.CirclePolarity == 0) cd.setPolarity(Polarity::Black2White);
cd.setPolarity(Polarity::Black2White);
else
cd.setPolarity(Polarity::White2Black);
cd.setFindBy(FindBy::Best); cd.setFindBy(FindBy::Best);
if (center.x == 0 || center.y == 0) if (center.x == 0 || center.y == 0)
{ {
@ -150,7 +229,7 @@ Mat ImageProcess::DetectCircle(Mat srcImg, Mat background, Point2f& center, doub
int rX = img.cols - center.x; int rX = img.cols - center.x;
int min_dify = center.y > rY ? rY : center.y; int min_dify = center.y > rY ? rY : center.y;
int min_difx = center.x > rX ? rX : center.x; int min_difx = center.x > rX ? rX : center.x;
int maxRadius = abs(abs(min_difx > min_dify ? min_dify : min_difx)-50); int maxRadius = abs(abs(min_difx > min_dify ? min_dify : min_difx) - 50);
double difRadiusMin = radius - 150; double difRadiusMin = radius - 150;
double difRadiusMax = radius + 250; double difRadiusMax = radius + 250;
if (difRadiusMin <= 0) if (difRadiusMin <= 0)
@ -158,26 +237,56 @@ Mat ImageProcess::DetectCircle(Mat srcImg, Mat background, Point2f& center, doub
difRadiusMin = cParam.filterSize; difRadiusMin = cParam.filterSize;
difRadiusMax = maxRadius; difRadiusMax = maxRadius;
} }
//控制范围,不让检测越界 //控制范围,不让检测越界
//if (difRadiusMin < cParam.filterSize) //if (difRadiusMin < cParam.filterSize)
difRadiusMin = cParam.filterSize; difRadiusMin = cParam.filterSize;
//if (difRadiusMax > maxRadius) //if (difRadiusMax > maxRadius)
difRadiusMax = maxRadius; difRadiusMax = maxRadius;
if (difRadiusMin > difRadiusMax) if (difRadiusMin > difRadiusMax)
difRadiusMin = 0; difRadiusMin = 0;
cd.setRadii(difRadiusMin, difRadiusMax); cd.setRadii(difRadiusMin, difRadiusMax);
cd.setACThres(cParam.CircleACThres); cd.setACThres(cParam.CircleACThres);
vector<float> allScores; vector<float> allScores;
Vec3f bestCircle; cv::Vec3f bestCircleB2W;
float bestScore = cd.detectBest(detectImg, Point2f(center.x, center.y), bestCircle, &allScores); float bestScoreB2W = cd.detectBest(detectImg, Point2f(center.x, center.y), bestCircleB2W, &allScores);
if (abs(bestScore) <= FLT_EPSILON || bestCircle == Vec3f::zeros()) { bool b2wFlag = true;
if (abs(bestScoreB2W) <= FLT_EPSILON || bestCircleB2W == Vec3f::zeros()) {
center.x = 0;
center.y = 0;
radius = 0;
b2wFlag = false;
}
cd.setPolarity(Polarity::White2Black);
cv::Vec3f bestCircleW2B;
float bestScoreW2B = cd.detectBest(detectImg, cv::Point2f(center.x, center.y), bestCircleW2B, &allScores);
bool w2bFlag = true;
if (abs(bestScoreW2B) <= FLT_EPSILON || bestCircleW2B == Vec3f::zeros()) {
center.x = 0; center.x = 0;
center.y = 0; center.y = 0;
radius = 0; radius = 0;
return Mat(); w2bFlag = false;
} }
if (!b2wFlag && !w2bFlag)
return cv::Mat();
float radiusB2W = bestCircleB2W[2];
float radiusW2B = bestCircleW2B[2];
cv::Vec3f bestCircle;
//避免出现半径大的,中心偏差较大的现象
if (std::abs(radiusB2W - radiusW2B) < 5)
{
double xDisB2W = bestCircleB2W[0] - center.x;
double yDisB2W = bestCircleB2W[1] - center.y;
double centerDisB2W = xDisB2W * xDisB2W + yDisB2W * yDisB2W;
double xDisW2B = bestCircleW2B[0] - center.x;
double yDisW2B = bestCircleB2W[0] - center.y;
double centerDisW2B = xDisW2B * xDisW2B + yDisW2B * yDisW2B;
bestCircle = centerDisB2W < centerDisW2B ? bestCircleB2W : bestCircleW2B;
}
else
bestCircle = radiusB2W > radiusW2B ? bestCircleB2W : bestCircleW2B;
Point2f cen(bestCircle[0], bestCircle[1]); Point2f cen(bestCircle[0], bestCircle[1]);
double r = bestCircle[2]; double r = bestCircle[2];
@ -195,7 +304,6 @@ Mat ImageProcess::DetectCircle(Mat srcImg, Mat background, Point2f& center, doub
radius = r; radius = r;
return s; return s;
} }
//使用背景图做减法扣圆 //使用背景图做减法扣圆
cv::Mat ImageProcess::findCircleByBackground(const Mat &srcImg, const Mat& backgroundImg, Point2f& center, double &radius, bool bEqual, int filterSize, const CircleParam& cParam) cv::Mat ImageProcess::findCircleByBackground(const Mat &srcImg, const Mat& backgroundImg, Point2f& center, double &radius, bool bEqual, int filterSize, const CircleParam& cParam)
{ {

@ -8,7 +8,6 @@ CamConfig::CamConfig(QString strPath)
init(); init();
} }
CamConfig::~CamConfig() CamConfig::~CamConfig()
{ {
} }

@ -91,7 +91,9 @@ QByteArray NetProtocol::parseData(const QByteArray dataSrc, int &nCmd, QList<int
} }
nCmd = mList.at(1).toInt(); nCmd = mList.at(1).toInt();
for (int i = 0; i < PROTOCOL_DATA_NUM; i++) { for (int i = 0; i < PROTOCOL_DATA_NUM; i++) {
lstData.append(mList.at(i + 2).toInt()); unsigned short ll = mList.at(i + 2).toInt();
short v = ll;
lstData.append(v);
} }
strModel = mList.at(10); strModel = mList.at(10);
return dataDst; return dataDst;

@ -406,7 +406,9 @@ Q_SLOT void CWheelNet::DataRecvByte(QByteArray m_data)
qWarning() << "recv a camera triger time:" << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss zzz") << ";"; qWarning() << "recv a camera triger time:" << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss zzz") << ";";
int hData = lstData.at(1); int hData = lstData.at(1);
int lData = lstData.at(2); int lData = lstData.at(2);
double dRatio = hData + lData * 1.0 / 1000; QString snum = QString("%1.%2").arg(hData).arg(lData);
double dRatio = snum.toDouble();
//double dRatio = hData + lData * 1.0 / 1000;
emit sgCameraTrig(lstData.at(0), dRatio);// 第几个 索引 emit sgCameraTrig(lstData.at(0), dRatio);// 第几个 索引
} }
break; break;

@ -351,6 +351,9 @@
<property name="buttonSymbols"> <property name="buttonSymbols">
<enum>QAbstractSpinBox::NoButtons</enum> <enum>QAbstractSpinBox::NoButtons</enum>
</property> </property>
<property name="minimum">
<double>-9999.000000000000000</double>
</property>
<property name="maximum"> <property name="maximum">
<double>9999.989999999999782</double> <double>9999.989999999999782</double>
</property> </property>
@ -378,6 +381,9 @@
<property name="buttonSymbols"> <property name="buttonSymbols">
<enum>QAbstractSpinBox::NoButtons</enum> <enum>QAbstractSpinBox::NoButtons</enum>
</property> </property>
<property name="minimum">
<double>-9999.899999999999636</double>
</property>
<property name="maximum"> <property name="maximum">
<double>9999.989999999999782</double> <double>9999.989999999999782</double>
</property> </property>

@ -23,12 +23,12 @@
#include <QProcess> #include <QProcess>
#include "lpCryptokey.h" #include "lpCryptokey.h"
#define VERSION_HUB "3.0.3.4" #define VERSION_HUB "3.0.3.4.1"
#define VERSION_ALG "3.0.1.6" #define VERSION_ALG "3.0.1.7"
#define UPDATE_TIME "2022-06-20" #define UPDATE_TIME "2022-08-29"
#define WHEELHIGHTTHRESH 250.0 //轮毂高度阈值10英寸当轮毂高度大于这个值时启用相机升高的直径算法 #define WHEELHIGHTTHRESH 250.0 //轮毂高度阈值10英寸当轮毂高度大于这个值时启用相机升高的直径算法
#define CAMERAUPHEIGHT 112.0 //相机上升高度默认11.2cm #define CAMERAUPHEIGHT 115.0 //相机上升高度默认11.5
#pragma execution_character_set("utf-8") #pragma execution_character_set("utf-8")
lpMainWin::lpMainWin(QWidget *parent) lpMainWin::lpMainWin(QWidget *parent)
@ -596,9 +596,6 @@ void lpMainWin::INewCameraImage(const QString& camKey, QImage img)
void lpMainWin::IVariantMapToUI(const QString& camKey, const QVariantMap& vMap) void lpMainWin::IVariantMapToUI(const QString& camKey, const QVariantMap& vMap)
{ {
try { try {
m_glbalRatio = 0;
emit(sgShowImgState(tr("显示识别结果"))); emit(sgShowImgState(tr("显示识别结果")));
Result2Ui *pResult = (Result2Ui*)vMap.value("result").toLongLong(); Result2Ui *pResult = (Result2Ui*)vMap.value("result").toLongLong();
double vRatioVal = vMap.value("ratioVal").toDouble(); double vRatioVal = vMap.value("ratioVal").toDouble();
@ -717,7 +714,7 @@ void lpMainWin::IVariantMapToUI(const QString& camKey, const QVariantMap& vMap)
SendResultChannel2PLC(pResult);//发送检测结果通道到PLC SendResultChannel2PLC(pResult);//发送检测结果通道到PLC
m_pCtrl->saveResult(pResult); m_pCtrl->saveResult(pResult);
m_glbalRatio = 0;
delete pResult; delete pResult;
} }
catch(...) catch(...)
@ -1143,17 +1140,17 @@ void lpMainWin::timerEvent(QTimerEvent *event)
void lpMainWin::closeEvent(QCloseEvent *event) void lpMainWin::closeEvent(QCloseEvent *event)
{ {
QMessageBox info(this); //QMessageBox info(this);
info.setWindowIcon(QIcon(":/image/leaper")); //info.setWindowIcon(QIcon(":/image/leaper"));
info.setWindowTitle(QObject::tr("警告")); //info.setWindowTitle(QObject::tr("警告"));
info.setText(QObject::tr("本检测系统正在运行,您真的要关闭?")); //info.setText(QObject::tr("本检测系统正在运行,您真的要关闭?"));
info.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); //info.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
info.setButtonText(QMessageBox::Ok, QObject::tr("确定")); //info.setButtonText(QMessageBox::Ok, QObject::tr("确定"));
info.setButtonText(QMessageBox::Cancel, QObject::tr("取消")); //info.setButtonText(QMessageBox::Cancel, QObject::tr("取消"));
if (info.exec() != QMessageBox::Ok) //if (info.exec() != QMessageBox::Ok)
{ //{
return event->ignore(); // return event->ignore();
} //}
if (m_pDebugDlg) if (m_pDebugDlg)
{ {
if (!m_pDebugDlg->isHidden()) if (!m_pDebugDlg->isHidden())
@ -1651,8 +1648,8 @@ void lpMainWin::onShowResult(Result2Ui* pRlt)
ui.main_lb_res_ng_num->setText(QString::number(DetectState::instance()->totalUnDetectNum)); ui.main_lb_res_ng_num->setText(QString::number(DetectState::instance()->totalUnDetectNum));
ui.main_lb_res_ok_num->setText(QString::number(DetectState::instance()->totalDetectNum)); ui.main_lb_res_ok_num->setText(QString::number(DetectState::instance()->totalDetectNum));
ui.main_lb_res_model_time->setText(QString::number(pRlt->m_dRunTime, 'f', 2)); ui.main_lb_res_model_time->setText(QString::number(pRlt->m_dRunTime, 'f', 2));
ui.main_lb_res_model_thickness->setText(QString::number((int)pRlt->m_dThickness)); //ui.main_lb_res_model_thickness->setText(QString::number((int)pRlt->m_dThickness));
ui.main_lb_res_model_diameter->setText(QString::number((int)pRlt->m_dDiameter)); //ui.main_lb_res_model_diameter->setText(QString::number((int)pRlt->m_dDiameter));
ui.main_lb_res_model_id->setText(pRlt->m_strModel); ui.main_lb_res_model_id->setText(pRlt->m_strModel);
ui.main_lb_res_model_score->setText(QString::number(pRlt->m_dScore * 100, 'f', 1) + "%"); ui.main_lb_res_model_score->setText(QString::number(pRlt->m_dScore * 100, 'f', 1) + "%");

@ -288,7 +288,28 @@
<property name="bottomMargin"> <property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item row="14" column="1"> <item row="16" column="0">
<widget class="QLabel" name="main_lb_res_Channle">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<property name="text">
<string>通道</string>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
<item row="12" column="1">
<widget class="QLabel" name="main_lb_res_ok_num"> <widget class="QLabel" name="main_lb_res_ok_num">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred"> <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
@ -314,27 +335,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="18" column="0">
<widget class="QLabel" name="main_lb_res_Channle">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<property name="text">
<string>通道</string>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" rowspan="5" colspan="3"> <item row="1" column="0" rowspan="5" colspan="3">
<widget class="QLabel" name="main_lb_res_model_pic"> <widget class="QLabel" name="main_lb_res_model_pic">
<property name="minimumSize"> <property name="minimumSize">
@ -363,33 +363,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="9" column="1"> <item row="14" column="1">
<widget class="QLabel" name="main_lb_res_model_thickness">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(170, 170, 127);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="16" column="1">
<widget class="QLabel" name="main_lb_res_ng_num"> <widget class="QLabel" name="main_lb_res_ng_num">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred"> <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
@ -440,66 +414,23 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="10" column="1"> <item row="6" column="0" colspan="3">
<widget class="QLabel" name="main_lb_res_model_diameter"> <widget class="QLabel" name="main_lb_res_okng">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(170, 170, 127);
</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="14" column="0">
<widget class="QLabel" name="label_20">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>0</width> <width>0</width>
<height>0</height> <height>35</height>
</size> </size>
</property> </property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="acceptDrops">
<bool>true</bool>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true"/> <string notr="true">background-color: rgb(200, 255, 100);
</property> font: 75 24pt &quot;Consolas&quot;;</string>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property> </property>
<property name="text"> <property name="text">
<string>已检测(个)</string> <string>None</string>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property> </property>
<property name="scaledContents"> <property name="alignment">
<bool>true</bool> <set>Qt::AlignCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
@ -530,27 +461,33 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="0" colspan="3"> <item row="11" column="1">
<widget class="QLabel" name="main_lb_res_okng"> <widget class="QLabel" name="main_lb_res_model_time">
<property name="minimumSize"> <property name="sizePolicy">
<size> <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<width>0</width> <horstretch>0</horstretch>
<height>35</height> <verstretch>0</verstretch>
</size> </sizepolicy>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">background-color: rgb(200, 255, 100); <string notr="true">background-color: rgb(170, 170, 127);</string>
font: 75 24pt &quot;Consolas&quot;;</string>
</property> </property>
<property name="text"> <property name="text">
<string>None</string> <string>0</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
<item row="16" column="0"> <item row="14" column="0">
<widget class="QLabel" name="label_21"> <widget class="QLabel" name="label_21">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
@ -583,33 +520,12 @@ font: 75 24pt &quot;Consolas&quot;;</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="8" column="0"> <item row="11" column="0">
<widget class="QLabel" name="label_6"> <widget class="QLabel" name="label_3">
<property name="maximumSize">
<size>
<width>82</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>匹配值</string>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_8">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>70</width> <width>82</width>
<height>19</height> <height>0</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
@ -627,11 +543,11 @@ font: 75 24pt &quot;Consolas&quot;;</string>
<string notr="true"/> <string notr="true"/>
</property> </property>
<property name="text"> <property name="text">
<string>直径(mm)</string> <string>时间(s)</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="18" column="1"> <item row="16" column="1">
<widget class="QLabel" name="main_lb_res_Channle_Show"> <widget class="QLabel" name="main_lb_res_Channle_Show">
<property name="font"> <property name="font">
<font> <font>
@ -671,41 +587,56 @@ font: 75 24pt &quot;Consolas&quot;;</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="13" column="0"> <item row="9" column="0">
<widget class="QLabel" name="label_3"> <widget class="QLabel" name="label_ratioTitle">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>偏距</string>
</property>
</widget>
</item>
<item row="12" column="0">
<widget class="QLabel" name="label_20">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>82</width> <width>0</width>
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
<property name="maximumSize">
<size>
<width>82</width>
<height>16777215</height>
</size>
</property>
<property name="font"> <property name="font">
<font> <font>
<pointsize>12</pointsize> <pointsize>12</pointsize>
</font> </font>
</property> </property>
<property name="acceptDrops">
<bool>true</bool>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true"/> <string notr="true"/>
</property> </property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="text"> <property name="text">
<string>时间(s)</string> <string>已检测(个)</string>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property>
<property name="scaledContents">
<bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item row="13" column="1"> <item row="9" column="1">
<widget class="QLabel" name="main_lb_res_model_time"> <widget class="QLabel" name="label_ratioValue">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font"> <property name="font">
<font> <font>
<pointsize>12</pointsize> <pointsize>12</pointsize>
@ -724,8 +655,8 @@ font: 75 24pt &quot;Consolas&quot;;</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="9" column="0"> <item row="8" column="0">
<widget class="QLabel" name="label_13"> <widget class="QLabel" name="label_6">
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>82</width> <width>82</width>
@ -741,39 +672,7 @@ font: 75 24pt &quot;Consolas&quot;;</string>
<string notr="true"/> <string notr="true"/>
</property> </property>
<property name="text"> <property name="text">
<string>厚度(mm)</string> <string>匹配值</string>
</property>
</widget>
</item>
<item row="11" column="0">
<widget class="QLabel" name="label_ratioTitle">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>偏距</string>
</property>
</widget>
</item>
<item row="11" column="1">
<widget class="QLabel" name="label_ratioValue">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(170, 170, 127);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property> </property>
</widget> </widget>
</item> </item>

Loading…
Cancel
Save