如何同步地改变脉冲激光

时间:2018-01-10 06:06:09

标签: c++ opencv

如何针对不同的脉冲同时对脉冲激光斑点进行衍射或跟踪。 基本上我们正在尝试制作一个狩猎游戏,因为那是开发射击算法的人。在那里使用脉冲激光武器进行射击,不同武器的脉冲如下,即20毫秒,50毫秒,100毫秒,130毫秒,160毫秒。等。

因此,我正在使用120fps的basler相机,Opencv,Qt C ++来实现这个概念 第一个我计算了这些激光器可以有多少帧,它们是上述脉冲的3,6,10,14,18个连续帧。使用霍夫圆转换能够找到激光命中检测点

 cvtColor(image,greyscale,CV_BGR2GRAY);
    GaussianBlur(greyscale,greyscale,Size(9,9),5,10);
    threshold(greyscale,greyscale,10,255,CV_THRESH_BINARY);
    HoughCircles(greyscale, circles, CV_HOUGH_GRADIENT, 1, greyscale.rows / 8, 50, 5, 0,100);

    for (size_t i = 0; i < circles.size(); i++)
    {
      Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
        int radius = cvRound(circles[i][2]);

        circle(greyscale, center, radius, Scalar(0, 0, 255), 3, 8, 8);

//Here center.x and center.y is actual x,y position of circle
}

所以我能够获得激光击中点的x,y。现在我如何跟踪这些以便我应该确定wt是在运行时拍摄的激光,并且在运行时所有5个激光也被激发。所以我的程序应该是这样的 它必须检测哪个激光器即使在多激光器被射击时也会发射。我可以找到这个我尝试逐帧扫描并检查圆圈x,y并使用上一帧进行比较,如果它匹配则增加变量直到下一个非检测帧或者不匹配的x,y,实际上它可以在所有人一个接一个地开火时起作用。但是我的应用程序应该可以工作,即使所有人都是一次性射击。为此,我只有一个开口,通过激光的“脉冲”来识别和分离。我必须看到,当所有其他人同时射击时,在运行时发射多长时间。所以我在网上搜索它但没有适当的帮助。甚至是计算机视觉的新手。请帮忙吗? 谢谢

0 个答案:

没有答案