我正在做一个关于人脸识别的项目.Qt用于创建前端.
当我点击按钮(标签'从网络摄像头选择视频')时,它将从网络摄像头捕获视频,但它不可见.在该意义上不可见,父窗口覆盖当前正在播放的视频,或者当前正在播放的视频在父窗口后面.我应该怎么做才能在所有父窗口前面,直到视频结束.
void admin_db_creation::on_pushButton_3_clicked()
{
capture = cvCaptureFromCAM(0);
if(!capture)
{
cout<<"Could not initialize capturing..."<<endl;
}
while(1)
{
frame2 = cvQueryFrame(capture);
frame3=detectFace(frame2);
imshow("window", frame2);
char key = cvWaitKey(10);
if (key == 27)
break;
}
}
Run Code Online (Sandbox Code Playgroud)
这是按钮点击代码,它包含播放视频的代码..
问题是你正在混合事件循环.
Qt提供自己的事件循环来处理所有系统事件,包括鼠标和键盘.当您使用时char key = cvWaitKey(10);,创建另一个由OpenCV提供的事件循环仅用于测试目的.
这是Qt代码,所以使用这个不定式循环(对于Qt它是不定式),创建一个插槽,它将获取单帧并处理它(显示它)并使用QTimer(timout信号)重复调用它.忘掉OpenCv的UI功能.从OpenCv只使用图像处理功能,没有别的.
这是类似的问题.而且这里的东西,可能也非常有用了这个话题.
| 归档时间: |
|
| 查看次数: |
608 次 |
| 最近记录: |