IVA/app/HxVideoDevice.h

69 lines
1.4 KiB
C
Raw Normal View History

2023-10-20 23:36:22 +08:00
#ifndef HXVIDEODEVICE_H
#define HXVIDEODEVICE_H
#include <QtConcurrent>
#include <QThread>
#include <QDateTime>
#include <QMap>
#include <QMutex>
#include "HxTaskDispatch.h"
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
#if USE_ALGORITHM
2023-10-20 23:36:22 +08:00
#include "rkrga/rga.h"
#include "rkrga/im2d.hpp"
#endif
class VideoDevice : public QThread
{
Q_OBJECT
public:
VideoDevice(void);
void set(int type, QString address);
void set(int type, QString address, BsdWarnRegion region);
void set(bool status);
QString snap(void);
QString build_image(int id);
QString build_video(int id);
void test(void);
private:
vector<uint8_t> compress(Mat frame, int quality);
QString snap(Mat frame);
QString snap(vector<uint8_t> data);
void video_frame_queue_check();
void read_frame();
protected:
void run() override;
2023-10-20 23:48:21 +08:00
private:
int MvGetFrameBlkInfo(VideoFrameDataInfo *pImageDataInfo);
int MvReleaseFrameBlkInfo(VideoFrameDataInfo *pImageDataInfo);
int MvConvertImage(VideoFrameDataInfo *pSrcImageDataInfo, VideoFrameDataInfo *pDstImageDataInfo);
2023-10-20 23:36:22 +08:00
private:
int type;
int frame_id;
int frame_fps;
QString address;
bool detection_status = true;
QMap<int, vector<uint8_t>> video_frames_string;
QMutex frame_mutex;
Mat video_frame;
VideoCapture video_capture;
2023-10-20 23:48:21 +08:00
2023-10-20 23:36:22 +08:00
VideoFrameDataInfo detect_frame_buffer;
VideoFrameDataInfo bgr_frame_buffer;
};
#endif // HXVIDEODEVICE_H