107 lines
3.3 KiB
C++
107 lines
3.3 KiB
C++
#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();//表示可以测试相机连接状态:是否连接,并反映到界面上
|
||
};
|