Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 背景提取_C++_Opencv_Computer Vision - Fatal编程技术网

C++ 背景提取

C++ 背景提取,c++,opencv,computer-vision,C++,Opencv,Computer Vision,有人能给我推荐一种快速获取前景图像的方法吗 目前我正在使用BackgroundSubtractorMOG2类来完成这项工作。它非常慢。我的任务不需要那么复杂的算法 我可以在游戏中得到背景的图像。摄像机位置不会改变。所以我相信有一个简单的方法可以做到这一点 我需要捕捉在摄像机前移动的一团物体。而且始终只有一个对象。我建议按照以下简单解决方案执行: 计算差分矩阵: cv::absdiff(帧、背景、absdiff) 这使得absDiff中的每个像素(i,j)设置为|帧(i,j)-背景(i.j)|

有人能给我推荐一种快速获取前景图像的方法吗

目前我正在使用BackgroundSubtractorMOG2类来完成这项工作。它非常慢。我的任务不需要那么复杂的算法

我可以在游戏中得到背景的图像。摄像机位置不会改变。所以我相信有一个简单的方法可以做到这一点


我需要捕捉在摄像机前移动的一团物体。而且始终只有一个对象。

我建议按照以下简单解决方案执行:

  • 计算差分矩阵:

    • cv::absdiff(帧、背景、absdiff)
    这使得absDiff中的每个像素(i,j)设置为|帧(i,j)-背景(i.j)|。每个通道(例如R、g、B)都是独立处理的

  • 将结果转换为单通道单色图像:

    • cv::cvtColor(absDiff,absDiffGray,cv::COLOR_bgr2 Gray)
  • 应用二进制筛选器:

    • cv::阈值(absDiffGray,absDiffGrayThres,0,255,cv_THRESH_BINARY | cv_THRESH_OTSU)
    这里我们使用Ots'u方法来确定合适的阈值水平。如果有的话 第二步中的噪声,二进制滤波器会将其去除

  • 在灰度图像中应用斑点检测。这可以是内置opencv方法或手动编写的代码之一,用于查找值为255的像素位置(记住快速opencv像素检索操作)

  • 这样的处理速度足够快,可以在非常旧的Core 2 Duo 2.1 GHz、4 GB RAM上管理640x480 RGB图像,帧速率至少为30 fps,而无需GPU支持



    硬件备注:确保您的相机镜头光圈未设置为自动调整。想象以下情况:您在开始时计算了一个背景图像。然后,一些对象出现并覆盖相机视图的大部分。进入透镜的光线减少,并且由于自动光线调节,相机增加光圈,背景颜色改变,差异会在实际上没有任何物体的地方产生一个斑点。

    我建议按照以下方法进行操作,简单的解决方案:

  • 计算差分矩阵:

    • cv::absdiff(帧、背景、absdiff)
    这使得absDiff中的每个像素(i,j)设置为|帧(i,j)-背景(i.j)|。每个通道(例如R、g、B)都是独立处理的

  • 将结果转换为单通道单色图像:

    • cv::cvtColor(absDiff,absDiffGray,cv::COLOR_bgr2 Gray)
  • 应用二进制筛选器:

    • cv::阈值(absDiffGray,absDiffGrayThres,0,255,cv_THRESH_BINARY | cv_THRESH_OTSU)
    这里我们使用Ots'u方法来确定合适的阈值水平。如果有的话 第二步中的噪声,二进制滤波器会将其去除

  • 在灰度图像中应用斑点检测。这可以是内置opencv方法或手动编写的代码之一,用于查找值为255的像素位置(记住快速opencv像素检索操作)

  • 这样的处理速度足够快,可以在非常旧的Core 2 Duo 2.1 GHz、4 GB RAM上管理640x480 RGB图像,帧速率至少为30 fps,而无需GPU支持



    硬件备注:确保您的相机镜头光圈未设置为自动调整。想象以下情况:您在开始时计算了一个背景图像。然后,一些对象出现并覆盖相机视图的大部分。进入透镜的光线减少,并且由于自动调整光线,相机增加光圈,背景颜色改变,差异会在没有任何物体的地方产生一个斑点。

    是在“发布”中编译程序之后吗?或者您是在“调试”中测试这个吗?在版本中。。帧速率约为6fps。。。这正常吗??我使用的是4GB RAN i5 2.9GHz第三代CPU和图形卡?请注意,您的相机拍摄的图像分辨率会显著影响计算。在将图像发送到OpenCV进行处理之前,您可以缩小图像的比例。感谢各位的回复。我想我的笔记本电脑出毛病了。。我用我的桌面和gt a abt 20fps尝试了640x480大小,在你用“发行版”编译程序之后?或者您是在“调试”中测试这个吗?在版本中。。帧速率约为6fps。。。这正常吗??我使用的是4GB RAN i5 2.9GHz第三代CPU和图形卡?请注意,您的相机拍摄的图像分辨率会显著影响计算。在将图像发送到OpenCV进行处理之前,您可以缩小图像的比例。感谢各位的回复。我想我的笔记本电脑出毛病了。。我用我的桌面和gt a abt 20fps尝试了640x480 sizeHi!在我发布问题之前,我也尝试过这个方法。。。但它一点也不成功。可能是因为自动调整光圈。。。我怎样才能关闭它?在运行速度或给定结果方面都不成功?关闭光圈调整直接取决于相机。你最好看看摄像机的驱动程序是否有这种可能性。例如,如果您有外部网络摄像头,网络摄像头控制面板中应该有这样的选项。嗨!在我发布问题之前,我也尝试过这个方法。。。但它一点也不成功。可能是因为自动调整光圈。。。我怎样才能关闭它?在运行速度或给定结果方面都不成功?关闭光圈调整直接取决于相机。你最好看看摄像机的驱动程序是否有这种可能性。例如,如果您有外部网络摄像头,网络摄像头控制面板中应该有这样的选项。