前面写过一篇关于视频对比的文章,后来又做了一些修缮,用代码实现了一遍。
//定时器,解码
void Cvideo4Dlg::OnTimer(UINT nIDEvent)
{
//输出视频解码
WaitForSingleObject(AfxBeginThread(Decode_out_Thread, this), INFINITE);
//输入视频解码
WaitForSingleObject(AfxBeginThread(Decode_in_Thread, this), INFINITE);
//当前帧开始检测
if(frame_test_over)
{
//备份被检测帧必要参数
if(current_frame_number != pCodecCtx_out->frame_number)
{
//为FALSE时,表示线程执行中,暂不开启新线程
frame_test_over = FALSE;
Sleep(5);
current_frame_number = pCodecCtx_out->frame_number;
CString frame_number_str_in;
CString frame_number_str_out;
frame_number_str_in.Format("src_%d.jpg", current_frame_number);
cvSaveImage(frame_number_str_in, Image_in);
frame_number_str_out.Format("dst_%d.jpg", current_frame_number);
cvSaveImage(frame_number_str_out, Image_out);
//开启检测线程
WaitForSingleObject(AfxBeginThread(Compare_Thread, this), INFINITE);
}
//帧号不再变化,则认为解码结束
else if(current_frame_number && (!encoder