53 lines
1.9 KiB
C++

#pragma once
#include <iostream>
#include <vector>
#include <memory>
#include <QString>
#include "hybridPosePositioning_Export.h"
#include "VZNL_Types.h"
#include "VrTimeUtils.h"
#include "VrError.h"
#include "VrLog.h"
#include "IVrConfig.h"
#include "LaserDataLoader.h"
#include "IYStatorWorkpiecePositionStatus.h"
#include "WorkpiecePositionModelAdapter.h"
class DetectPresenter
{
private:
WorkpiecePositionModelAdapter m_workpieceModel;
public:
DetectPresenter(/* args */);
~DetectPresenter();
static QString GetAlgoVersion();
/// 同步执行左目二维定位;返回后 detections 完全由应用持有。
int LocateWorkpiece2D(const SVzNLImageData& leftImage,
const VrWorkpieceModelParam& modelParam,
const VrDebugParam& debugParam,
std::vector<WorkpiecePositionModelAdapter::Detection>& detections);
/// 使用已经深拷贝的二维定位结果执行定子工件三维定位。
int DetectStatorWorkpiecePosition(int cameraIndex,
std::vector<std::pair<EVzResultDataType, SVzLaserLineData>>& laserLines,
const std::vector<WorkpiecePositionModelAdapter::Detection>& detections,
const VrAlgorithmParams& algorithmParams,
const VrDebugParam& debugParam,
LaserDataLoader& dataLoader,
const double clibMatrix[16],
int eulerOrder,
int dirVectorInvert,
const WD_HRM_BinInfo* binInfo,
StatorWorkpiecePositionDetectionResult& detectionResult);
int DetectBin(int cameraIndex,
std::vector<std::pair<EVzResultDataType, SVzLaserLineData>>& laserLines,
const VrAlgorithmParams& algorithmParams,
const VrDebugParam& debugParam,
LaserDataLoader& dataLoader,
WD_HRM_BinInfo& binInfo);
};