Files
HPPA/HPPA/ImagerOperationBase.h
tangchao0503 b779118d72 1、记录x马达位置用于拼接影像;
2、修复了航线读写错误问题;
2025-02-27 11:18:26 +08:00

107 lines
3.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include <QObject>
#include <QString>
#include "image2display.h"
#include "fileOperation.h"
#include <string>
#include <opencv2/core/core.hpp>
#include "ImagerOperationBase.h"
#include "utility_tc.h"
class ImagerOperationBase :public QObject
{
Q_OBJECT
public:
ImagerOperationBase();
~ImagerOperationBase();
virtual double getWavelengthAtBand(int band) = 0;
virtual int getBandCount() = 0;
virtual int getSampleCount() = 0;
virtual double getFramerate() = 0;
virtual double getIntegrationTime() = 0;
virtual double getGain() = 0;
virtual void setFramerate(const double frames_per_second) = 0;
virtual void setIntegrationTime(const double milliseconds) = 0;
virtual void setGain(const double gain) = 0;
virtual int getStartBand() = 0;
virtual int getEndBand() = 0;
virtual void connectImager(const char* camera_sn = NULL) = 0;
virtual void disconnectImager() = 0;
virtual void imagerStartCollect() = 0;
virtual void imagerStopCollect() = 0;
virtual unsigned short* getFrame(unsigned short* buffer) = 0;
virtual void setSpectraBin(int new_spectral_bin) = 0;
CImage* getRgbImage() const;
cv::Mat* getMatRgbImage() const;
cv::Mat* getMatFocusGrayImage() const;
QImage getQImageFocusGrayImage() const;
bool getRecordControlState() const;
void setRecordControlState(bool RecordControlState);
int getFrameCounter() const;
int getFocusFrameCounter() const;
unsigned short* buffer;//存储采集到的影像的中间变量,下一步写入到硬盘中
void set_buffer();
void setFileName2Save(string FileName);
void setFrameNumber(int FrameNumber);
void setFocusControlState(bool FocusControlState);
int GetFrameSize(int& iWidth, int& iHeight);
protected:
CImage* m_RgbImage;//显示的rgb图像
bool m_bRecordControlState;//采集状态;可用于执行停止采集操作
int m_iFrameCounter;//记录采集的帧数
int m_iFocusFrameCounter;//记录调焦时采集的帧数
int m_FrameSize;//表示一帧代表有多少个数值m_FrameSize = m_imager.get_band_count()*m_imager.get_sample_count();
int m_iFrameNumber;//需要采集的总帧数
//以下两个参数用于给保存的影像文件命名
string m_FileName2Save;//保存的影像文件名
int m_FileSavedCounter;//保存了几个影像文件
bool m_HasDark;//当采集了暗电流之后设置为true
bool m_HasWhite;//当采集了白板之后设置为true
unsigned short* dark;//存储暗电流
unsigned short* white;//存储白板
bool m_bFocusControlState;//控制调焦结束
virtual void WriteHdr();
unsigned short GetMaxValue(unsigned short* dark, int number);
private:
public slots:
virtual void connect_imager(int frameNumber);//连接相机、开辟缓存
virtual double auto_exposure();
virtual void focus();
virtual void start_record();
virtual void record_dark();
virtual void record_white();
signals:
void PlotSignal();//绘制影像信号
void RecordFinishedSignal_WhenFrameNumberMeet();//采集完成信号需要采集的总帧数m_iFrameNumber采集完成
void RecordFinishedSignal_WhenFrameNumberNotMeet();//采集完成信号需要采集的总帧数m_iFrameNumber没有采集完成中途停止采集
void SpectralSignal(int);//发射1代表正在调焦绘制光谱发射0表示调焦完成
void RecordWhiteFinishSignal();
void RecordDarlFinishSignal();
void testImagerStatus();//表示可以测试相机连接状态:是否连接,并反映到界面上
};