300TC 机载系统 完整功能,(1)采集影像(2)采集和解析惯导数据(3)惯导磁场校正
This commit is contained in:
115
Header_Files/ximeaimager.h
Normal file
115
Header_Files/ximeaimager.h
Normal file
@ -0,0 +1,115 @@
|
||||
#ifndef XIMEAIMAGER_H
|
||||
#define XIMEAIMAGER_H
|
||||
|
||||
/*
|
||||
This is the reference example application code for XIMEA cameras.
|
||||
You can use it to simplify development of your camera application.
|
||||
|
||||
Sample name:
|
||||
xiAPI / Capture-10-images
|
||||
|
||||
Description:
|
||||
Open camera, capture 10 images while printing first pixel from each image.
|
||||
|
||||
Workflow:
|
||||
1: Open camera
|
||||
2: Set parameters
|
||||
3: Start acquisition
|
||||
4: Each image captured - print dimensions and value of the first pixel
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <iostream>
|
||||
#include <sys/time.h>
|
||||
#include <memory.h>
|
||||
#include <fstream>
|
||||
#include <unistd.h>
|
||||
#include <exception>
|
||||
|
||||
#include <QObject>
|
||||
#include <qthread.h>
|
||||
|
||||
#include "irisximeaimager.h"
|
||||
#include "math.h"
|
||||
#include "utility_tc.h"
|
||||
|
||||
|
||||
//#ifdef WIN32
|
||||
//#include <xiApi.h> // Windows
|
||||
//#else
|
||||
//#include <m3api/xiApi.h> // Linux, OSX
|
||||
//#endif
|
||||
|
||||
class XimeaImager : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
XimeaImager();
|
||||
|
||||
void setFramerate(double framerate);
|
||||
double getFramerate();
|
||||
double setExposureTime(float exposureTime);
|
||||
double getExposureTime();
|
||||
double autoExposure();
|
||||
void setGain(double gain);
|
||||
double getGain();
|
||||
int getSampleCount();
|
||||
int getBandCount();
|
||||
|
||||
int getWindowStartBand();
|
||||
int getWindowEndBand();
|
||||
double geWavelengthAtBand(int x);
|
||||
|
||||
void stopRecord();
|
||||
int getFrameCounter();
|
||||
|
||||
int getMaxValueOfOneFrame(unsigned short * data, int numberOfPixel);
|
||||
|
||||
int getImagerState() const;
|
||||
private:
|
||||
//0:未打开;1:打开;2:设置帧率;3:自动曝光;4:正在采集; 21,未处理错误;22:RESOURCE_OR_FUNCTION_LOCKED;23,;
|
||||
int m_iImagerState;
|
||||
int m_iImagerStateTemp;
|
||||
|
||||
QString m_baseFileName;
|
||||
|
||||
Iris::IrisXimeaImager m_imager;
|
||||
unsigned short * m_buffer;
|
||||
bool m_bRecordControl;
|
||||
int m_iFrameCounter;
|
||||
int m_iFrameSizeInByte;
|
||||
void writeHdr();
|
||||
|
||||
void processXiApiErrorCodes(int xiApiErrorCodes);
|
||||
|
||||
inline double getSbgTime(double TimeDifferenceBetweensOSAndSbg)
|
||||
{
|
||||
struct timespec systemTime;
|
||||
clock_gettime(CLOCK_REALTIME,&systemTime);
|
||||
tm systemTime_rili;
|
||||
localtime_r(&systemTime.tv_sec, &systemTime_rili);
|
||||
|
||||
double secondSystem=(systemTime_rili.tm_mday-1)*24*60*60+systemTime_rili.tm_hour*60*60+systemTime_rili.tm_min*60+systemTime_rili.tm_sec;
|
||||
double nanosecondSystem=secondSystem+static_cast<double>(systemTime.tv_nsec)/1000000000;
|
||||
|
||||
|
||||
// printf("\n");
|
||||
// printf("XimeaImager::getSbgTime------系统时间纳秒%d\n", systemTime.tv_nsec);
|
||||
// printf("XimeaImager::getSbgTime------系统时间(未偏移)%f\n", nanosecondSystem);
|
||||
// printf("XimeaImager::getSbgTime------系统时间(偏移)%f\n", nanosecondSystem-TimeDifferenceBetweensOSAndSbg);
|
||||
|
||||
return nanosecondSystem-TimeDifferenceBetweensOSAndSbg;
|
||||
}
|
||||
|
||||
public slots:
|
||||
void openImger();
|
||||
void closeImger();
|
||||
|
||||
void startRecord(double TimeDifferenceBetweensOSAndSbg,QString baseFileName);
|
||||
|
||||
signals:
|
||||
void recordFinished();
|
||||
void ximeaImageStatus(int);
|
||||
};
|
||||
#endif // XIMEAIMAGER_H
|
Reference in New Issue
Block a user