0
我似乎無法在代碼中發現錯誤。代碼編譯完美我能夠開始視頻,但我無法錄製視頻。使用opencv和Qt的視頻記錄
圖像輸出窗口
視頻文件以所需目錄中創建,但它僅是10kb的。我曾嘗試將four_cc改爲MPEG仍然沒有效果。
#include "camerafeed.h"
#include "ui_camerafeed.h"
#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <opencv/cv.h>
#include <QtCore>
using namespace cv;
using namespace std;
bool recording = false;
camerafeed::camerafeed(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::camerafeed)
{
ui->setupUi(this);
cap1.open(0);
Starttrigger = new QTimer(this);
// connect(Starttrigger,SIGNAL(timeout()),this,SLOT(processGui()));
}
camerafeed::~camerafeed()
{
delete ui;
}
void camerafeed::processGui()
{
int fcc = CV_FOURCC('D','I','V','X');
int fps = 20;
cap1.read(frame1);
Size frameSize(cap1.get(CV_CAP_PROP_FRAME_WIDTH),cap1.get(CV_CAP_PROP_FRAME_HEIGHT));
string filename1 = "D:\\Camera1\\video1.avi";
writer1 = VideoWriter(filename1,fcc,fps,frameSize);
bool bSuccess = cap1.read(frame1);
if(recording==true)
{
writer1.write(frame1);
putText(frame1,"[REC]",Point(0,30),5,1,Scalar(0,0,225));
}
cv::cvtColor(frame1,frame1,CV_BGR2RGB);
QImage qframe1((uchar*)frame1.data,frame1.cols,frame1.rows,frame1.step,QImage::Format_RGB888);
ui->camera1->setPixmap(QPixmap::fromImage(qframe1));
}
void camerafeed::on_Start_clicked()
{
Starttrigger->start(20);
connect(Starttrigger,SIGNAL(timeout()),this,SLOT(processGui()));
}
void camerafeed::on_stop_clicked()
{
Starttrigger->stop();
recording = false;
disconnect(Starttrigger,SIGNAL(timeout()),this,SLOT(processGui()));
}
void camerafeed::on_record_clicked()
{
recording = !recording;
}
感謝的是解決我的問題,但isRecorded必須是一個全局變量 –
你說的全球平均? – eyllanesc
如果我intialized isRecorded設置我無法在CameraFeed :: on_record_clicked()中訪問它,所以我不得不聲明它在 –