61 lines
1.9 KiB
C++
61 lines
1.9 KiB
C++
#pragma once
|
|
|
|
#include <QImage>
|
|
#include <QString>
|
|
#include <cstddef>
|
|
#include <mutex>
|
|
#include <utility>
|
|
#include <vector>
|
|
|
|
#include "IVrConfig.h"
|
|
#include "IYWeldSeamStatus.h"
|
|
#include "LaserDataLoader.h"
|
|
#include "SG_baseDataType.h"
|
|
#include "VZNL_Types.h"
|
|
|
|
class DetectPresenter
|
|
{
|
|
public:
|
|
DetectPresenter();
|
|
static QString GetAlgoVersion();
|
|
|
|
void ResetIncrementalData();
|
|
bool ProcessDetectionLine(EVzResultDataType dataType,
|
|
const SVzLaserLineData& lineData,
|
|
const VrAlgorithmParams& algorithmParams,
|
|
const SSG_planeCalibPara& groundCalibParam,
|
|
LaserDataLoader& dataLoader);
|
|
bool HasIncrementalData() const;
|
|
|
|
int DetectWeldSeam(
|
|
int cameraIndex,
|
|
std::vector<std::pair<EVzResultDataType, SVzLaserLineData>>& laserLines,
|
|
const VrAlgorithmParams& algorithmParams,
|
|
const SSG_planeCalibPara& groundCalibParam,
|
|
const VrDebugParam& debugParam,
|
|
LaserDataLoader& dataLoader,
|
|
DetectionResult& detectionResult);
|
|
|
|
private:
|
|
void ResetIncrementalImage();
|
|
void AddIncrementalImageLine(const std::vector<SVzNL3DPosition>& scanLine);
|
|
QImage BuildIncrementalResultImage(
|
|
const std::vector<std::vector<SVzNL3DPoint>>& weldPaths) const;
|
|
|
|
mutable std::mutex m_incrementalMutex;
|
|
std::vector<SSG_basicFeatureGap> m_pendingLineValleys;
|
|
std::vector<SSG_gapFeatureTree> m_incrementalFeatureTrees;
|
|
std::size_t m_incrementalLineCount = 0;
|
|
QImage m_incrementalImage;
|
|
double m_imageXMin = 0.0;
|
|
double m_imageYMin = 0.0;
|
|
double m_imageScale = 1.0;
|
|
double m_observedXMin = 0.0;
|
|
double m_observedXMax = 0.0;
|
|
double m_observedYMin = 0.0;
|
|
double m_observedYMax = 0.0;
|
|
bool m_incrementalImageValid = false;
|
|
std::size_t m_imageInputPointCount = 0;
|
|
std::size_t m_imageOutputPointCount = 0;
|
|
};
|