实现功能:提取rgb波段并通过h264编码;

This commit is contained in:
tangchao0503
2024-01-23 09:35:01 +08:00
parent 061e1f83bd
commit 2e4679aaef
5 changed files with 492 additions and 81 deletions

View File

@ -11,6 +11,40 @@
#include <QObject>
#include <QImage>
#include <opencv2/opencv.hpp>//包含了所有东西,编译很慢
#include "opencv2/imgproc/types_c.h"
extern "C"
{
#include <libavcodec/avcodec.h>
#include <libavutil/opt.h>
#include "libavutil/pixfmt.h"
#include "libswscale/swscale.h"
#include <libavutil/imgutils.h>
#include <libavutil/avutil.h>
#include "libavdevice/avdevice.h"
}
class Encode
{
public:
Encode();
void initffmpeg(int width, int height);
FILE *fp;
AVCodecContext *avcodeccontext;
void savedata(AVFrame *frame);
void encode(AVCodecContext *enc_ctx, AVFrame *frame, AVPacket *pkt, FILE *outfile);
AVPacket m_avpacket;
AVFrame *inpic;
AVFrame *outpic;
bool isinit;
int index1;
private:
};
using namespace cv;
class rgbImage :public QObject
@ -27,9 +61,11 @@ public:
void FillFocusGrayQImage(unsigned short * datacube);
void FillOnerowofRgbImage(cv::Mat * matRgbImage, int rowNumber, unsigned short *datacube);
QImage Mat2QImage(cv::Mat cvImg);//https://www.cnblogs.com/annt/p/ant003.html
QImage *m_QRgbImage;
cv::Mat *m_matRgbImage;
QImage m_Qphoto;
QImage *m_qimageFocusGrayImage;
cv::Mat *m_matFocusGrayImage;//用于调焦时,显示一帧的灰度图
@ -61,6 +97,8 @@ private:
int m_iFrameNumber;//
void initffmpeg();
public slots:
signals :