(1) 问题描述:创建多个线程,在每个线程中使用VideoCapture类打开一个视频文件,然后使用imshow显示视频帧,但是只出现一个视频窗口,视频帧混合在一起;简要接口如下:
## 简要代码,仅供参考
void *testThread(void *arg)
{
VideoCapture cap;
Mat img;
cap.open("./test.avi");
while(1){
cap >> img;
if (img.empty)
break;
imshow("img", img);
WaitKey(1);
}
}
int main(int argc, char **argv)
{
for (int i=0; i<10; i++){
pthread_t tid;
pthread_create(&tid, NULL, testThread, NULL);
}
}
(2) 问题原因:多个线程中imshow使用同一个窗口名,导致视频帧混合在一起;
(3) 解决方法:imshow使用不同名称即可。