OpenCV保存摄像头录制视频,视频时间长度不对
兜黎 2018-01-25 01:06:40 m_capture = cv::VideoCapture(0);
if (!m_capture.isOpened())
{
MessageBoxA(NULL, "It didn't turn on the back camera", "Camera", MB_OK);
return;
}
m_capture.set(CV_CAP_PROP_FRAME_WIDTH, 320);
m_capture.set(CV_CAP_PROP_FRAME_HEIGHT, 240);
m_iWidthCapture = static_cast<int>(m_capture.get(CV_CAP_PROP_FRAME_WIDTH));
m_iHeigthCapture = static_cast<int>(m_capture.get(CV_CAP_PROP_FRAME_HEIGHT));
cv::Size videoSize(m_iWidthCapture, m_iHeigthCapture);
m_videoWriter.open(strVideoFileName, CV_FOURCC('D', 'I', 'V', 'X'), 20, videoSize);
if (!m_videoWriter.isOpened())
{
MessageBoxA(NULL, "Save Failure", "Save", MB_OK);
return;
}
m_iMarkTime = 0;
m_timRecordVideo->start(50);
connect(m_timRecordVideo, SIGNAL(timeout()), SLOT(slotRecordingVideo()));
void EEGAnalyse::slotRecordingVideo()
{
//videoCapture >> m_frame;
m_capture.read(m_frame);
m_curTime = QDateTime::currentDateTime();
m_strCurDate = m_curTime.toString("yyyy/MM/dd").toStdString();
m_strCurTime = m_curTime.toString("hh:mm:ss").toStdString();
m_strVideoMark = "Mark:" + g_strMark;
if (m_iMarkTime == 30)
{
g_strMark = "";
m_iMarkTime = 0;
}
cv::putText(m_frame, "WingThinks", cv::Point(m_iWidthCapture - 170, m_iHeigthCapture - 10),
cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(10, 128, 250), 2, 4);
cv::putText(m_frame, m_strCurDate, cv::Point(5, 30), cv::FONT_ITALIC, 1, cv::Scalar(10, 128, 250), 2, 4);
cv::putText(m_frame, m_strCurTime, cv::Point(5, 65), cv::FONT_ITALIC, 1, cv::Scalar(10, 128, 250), 2, 4);
cv::putText(m_frame, m_strVideoMark, cv::Point(5, 100), cv::FONT_ITALIC, 1, cv::Scalar(10, 128, 250), 2, 4);
m_iMarkTime++;
/*double fScale = 0.5;
cv::Size dsize = cv::Size(w * fScale, h * fScale);
cv::Mat frame = cv::Mat(dsize, CV_32S);
cv::resize(m_frame, frame, dsize);*/
m_videoWriter.write(m_frame);
int iw = m_frame.cols;
int ih = m_frame.rows;
m_image = QImage((uchar*)(m_frame.data), m_frame.cols, m_frame.rows, QImage::Format_RGB888).rgbSwapped();
m_newImg = m_image.scaled(ui.label_Video->width(), ui.label_Video->height());
ui.label_Video->setPixmap(QPixmap::fromImage(m_newImg));
m_frame.release();
}
这是我的显示和保存代码,哪位大神可以指点一下,录制时长不对的原因吗?