Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

可否支持多摄像头 #47

Open
pandafeng1999 opened this issue May 27, 2024 · 4 comments
Open

可否支持多摄像头 #47

pandafeng1999 opened this issue May 27, 2024 · 4 comments

Comments

@pandafeng1999
Copy link

想采用多摄像头并行检测,但水平实在是有限

@leafqycc
Copy link
Owner

leafqycc commented May 27, 2024

想采用多摄像头并行检测,但水平实在是有限

最简单的,为每一个摄像头创建线程,然后每一个摄像头线程内创建一个只有1线程的模型线程池就好了
参考main里面的, 将threadNum设置成1或者2。理论上来说检测资源消耗会均摊到每一个NPU核心上(include/coreNum.hpp)

rknnPool<rkYolov5s, cv::Mat, cv::Mat> testPool(model_name, threadNum);
if (testPool.init() != 0)
{
    printf("rknnPool init fail!\n");
    return -1;
}

此方法会造成资源的一些浪费,您可以调高cv::waitKey()的值,或者自行添加sleep到循环内,确保某一个摄像头帧率不会过高

@leafqycc
Copy link
Owner

想采用多摄像头并行检测,但水平实在是有限

想采用多摄像头并行检测,但水平实在是有限

或者您可以自定义输入输出如下,然后在主线程中创建一个模型线程池,每一个摄像头线程调用put方法进行输入,再参考单生产者,多消费者的模式获取对应摄像头的输出

struct {
    int uuid;
    cv::Mat image;
}

@lsm140
Copy link

lsm140 commented May 31, 2024

想采用多摄像头并行检测,但水平实在是有限

想采用多摄像头并行检测,但水平实在是有限

或者您可以自定义输入输出如下,然后在主线程中创建一个模型线程池,每一个摄像头线程调用put方法进行输入,再参考单生产者,多消费者的模式获取对应摄像头的输出

struct {
    int uuid;
    cv::Mat image;
}

我想问下这个问题,我按这个实现出现两个问题,一个是之前线程数可以设置得高一些,现在只能设置成1,大于1就core dumped;另一个是画面显示的框都聚集在左上方的一个矩形区域内,不正常。请问是什么原因呢?该如何解决,期待大佬解答

@leafqycc
Copy link
Owner

leafqycc commented Jun 2, 2024

想采用多摄像头并行检测,但水平实在是有限

想采用多摄像头并行检测,但水平实在是有限

或者您可以自定义输入输出如下,然后在主线程中创建一个模型线程池,每一个摄像头线程调用put方法进行输入,再参考单生产者,多消费者的模式获取对应摄像头的输出

struct {
    int uuid;
    cv::Mat image;
}

我想问下这个问题,我按这个实现出现两个问题,一个是之前线程数可以设置得高一些,现在只能设置成1,大于1就core dumped;另一个是画面显示的框都聚集在左上方的一个矩形区域内,不正常。请问是什么原因呢?该如何解决,期待大佬解答

不太清楚诶,实在不行您要不参考 rknnPool 类,直接获取线程池返回的 future 句柄,在摄像头线程内部对输入输出序列进行单独维护吧。想了想 rknnPool 类内部对线程池和 std::queue<std::future> futs 队列进行维护有点过于耦合了()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants