PFeverCamProcessor Class Reference

Detailed Description

The PFeverCamProcessor class is the main class for handling FeverCam processing for person temperature reading.

It automatically connects to a FeverCam from its IP address (color video stream handling is user's responsibility) It processes images and provides methods to:

  • Estimate face temperature (and temperature measurement confidence)
  • Locate black-body
  • Create side-by-side image of color and thermal camera

Definition at line 40 of file PFeverCamProcessor.h.

#include <PFeverCamProcessor.h>

Constructor & Destructor Documentation

◆ PFeverCamProcessor() [1/2]

PFeverCamProcessor::PFeverCamProcessor ( )

Constructs an empty, inactive FeverCam processor.

◆ PFeverCamProcessor() [2/2]

PFeverCamProcessor::PFeverCamProcessor ( const PFeverCamProcessor other)

Constructs a shared copy of other.

◆ ~PFeverCamProcessor()

virtual PFeverCamProcessor::~PFeverCamProcessor ( )
virtual

Destroys this object.

Member Function Documentation

◆ CreateCompositeImage()

PResult PFeverCamProcessor::CreateCompositeImage ( const PImage i_colorImg,
const PDateTime i_timestamp,
PImage o_composite,
int32  i_maxDelayMs = 1000 
)

Creates composite image from Color and synchronized temperature source images side by side smallest image is scaled-up to have same height.

Fails if no matching temperature image could be found

◆ Deactivate()

void PFeverCamProcessor::Deactivate ( )

Stops FeverCam temperature stream capture and processing.

◆ EstimateFaceTemperature()

PResult PFeverCamProcessor::EstimateFaceTemperature ( const PDetection detectedFace,
double &  o_temperature,
double &  o_confidence,
int32  i_maxDelayMs = 1000 
)

Estimate temperature for face detected in color video stream Face temperature is already corrected (as skin temperature is slightly lower than actual body temperature) temperature confidence is set to 0 if black-body was supposed to be masked.

Fails if:

  • Calibration is invalid
  • No matching frame could be found (closer than maxDelayMs)
  • No temperature change was detected (either calibration is incorrect or detected face is actually not a human face)

◆ GetCalibration() [1/2]

const PFeverCamCalibration& PFeverCamProcessor::GetCalibration ( ) const

Retrieves calibration for direct usage (no change possible)

◆ GetCalibration() [2/2]

PFeverCamCalibration& PFeverCamProcessor::GetCalibration ( )

Retrieves calibration for modification.

◆ GetTemperatureVideoSource()

PResult PFeverCamProcessor::GetTemperatureVideoSource ( PInputVideoStream o_temperatureStream) const

Outputs the currently used temperature stream that can be used to modify FeverCam settings (see PInputVideoStreamFeverCam plugin parameters for more details)

Fails if temperature stream is not available

◆ GetThermalFrameAt()

PResult PFeverCamProcessor::GetThermalFrameAt ( const PDateTime i_dt,
PFrame o_tframe,
int32  i_maxDelayMs = 1000 
)

Retrieves temperature frame at input timestamp.

Fails if No corresponding image could be found

◆ HandleFeverCam()

PResult PFeverCamProcessor::HandleFeverCam ( const PString i_thermalIPAddr)

Tries to handle FeverCam available at provided IP addr Disconnects any previously connected fever cam, sets URI correctly and starts processing Fails if provided IP addr is not joinable or is not a valid FeverCam.

◆ IsActive()

bool PFeverCamProcessor::IsActive ( ) const

Returns true if processor is active, i.e.

connected to a FeverCam temperature stream

◆ LocateBlackBody()

PResult PFeverCamProcessor::LocateBlackBody ( const PFrame i_colorFrame,
PList o_candidateRectList,
int32  i_maxDelayMs = 1000 
)

Locates black body in color frame using synchronized temperature frame and calibration for better localization.

Fails if:

  • Input image is empty
  • No corresponding image could be found
  • Calibration is invalid

◆ SetCalibration()

void PFeverCamProcessor::SetCalibration ( const PFeverCamCalibration i_calib)

Sets calibration.

Friends And Related Function Documentation

◆ PFeverCamProcessorImpl

friend class PFeverCamProcessorImpl
friend

Definition at line 142 of file PFeverCamProcessor.h.