首页 文章

openCV检测闪烁的灯光

提问于
浏览
10

我的问题类似于这个问题:OpenCV: Detect blinking lights in a video feed

我有一个LED灯,我的相机以30fps运行 . 在每一帧,我都知道灯是否亮了 . 与前一个问题类似,我也希望获得该点的位置 .

我现在想知道如何在这个实例中使用openCV(我是新的) . 如果光只是一个像素就很容易,但是由于相当大的背景噪声和LED的大小,我如何检测图像中最大的光源 . 我必须假设我无法自由设置曝光(在iPhone上) .

我是图像处理新手,所以我怎么做到这一点?

2 回答

  • 1

    如果背景只是嘈杂,但不会改变那么多你可以减去背景:

    你有2帧,你做Frame2-Frame1,然后你应用一个阈值(阈值的值取决于LED的强度,所以你应该测试它),你设置为黑色低于阈值的像素和白色像素高于阈值 .

    如果您将图像转换为灰度图像,这非常容易 .

    应该是这样的somenthign:

    cvAbsDiff(img2, img1, img2);
    cvThreshold(img2, img2, (double)threshold_value, 255 (if you are using an rgb image), CV_THRESH_BINARY);
    

    如果你的LED已关闭,你应该只是噪音,而如果你带领,你将期望找到一个白色区域,你的灯光照亮 .

  • 6

    我想你不能只是减去这两个图像以消除噪音,因为相机总是有一些动作......它不能稳定.....所以你最终弄得一团糟......

    我的调用是使用“inrange”函数,如果一个像素是完全明亮的,即255或200以上,请保持原样,否则只需将其设为零.....所以你最终只得到了led部分.. .background走了!!

相关问题