繁体   English   中英

OpenCV 中的线程问题 imwrite in C++

[英]Threading problem in OpenCV imwrite in C++

我正在做一个执行以下操作的应用程序:

  • 我们有多个摄像头,我们以 25fps 的速度收集图像,我们使用线程来使这些收集的图像同步。

现在,我有一个 while 循环

vector<string> arrCameraSources = {
    "rtsp://10.0.0.1/",
    "rtsp://10.0.0.2/",
    "rtsp://10.0.0.3/"
};
ClsStitch objStitch;


ClsCameraStreamer cam(arrCameraSources);
//Mat left, right, center;
Mat frame;
Size sSize(2688, 1500);

while (waitKey(20) != 27)
{
    

    for (int i = 0; i < arrCameraSources.size(); i++)
    {
        //Pop frame from queue and check if the frame is valid
        if (cam.mQueue[i]->try_pop(frame))
        {
            switch(i) {
            case(0):
                imgRight = frame;
                break;
            case(1):
                imgCenter = frame;
                break;
            case (2):
                imgLeft = frame;
                break;
            }
            cam.mQueue[i]->clear();
        }
    };

    if (imgLeft.empty() || imgRight.empty() || imgCenter.empty())
    {
        //cout << "Empty Images" << endl;
        continue;
    }
    else {
        
        Mat mStitched = objStitch.StitchFrames(homographyLeftCenter, homographyFinal, imgRight, imgCenter, imgLeft, cntFrames, map1, map2, boolUndistort);
        sprintf_s(strPathName, "%06d.jpg", cntFrames);
        imwrite(strPathName, mStitched);
    }
};       
}

拼接过程每帧大约需要 80 毫秒,我想将其降低到每帧不到 40 毫秒,所以我想使用线程来解决这个问题。 如果您能帮助我使用线程缝合图像并将 output 作为图像保存到我的硬盘中,我将不胜感激。

PS:拼接算法工作正常,我不需要任何帮助。 PS:我需要所有来自相机的25pfs,请不要告诉我为什么需要它们,我应该只保存更少的帧,我的问题需要全部拥有它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM