opencv多线程读取录像并显示问题

(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使用不同名称即可。

你可能感兴趣的:(学习ing,opencv,c++)