我正在尝试使用opencv背景差分来检测移动对象。它对一些视频效果很好。但是对于一个特定的视频(由静止摄像机捕获),它不会检测到移动的行人。此外,视频中有非常小的阵雪,这是肉眼很难看到的。这可能是它没有检测到移动物体的原因。或者可能有其他原因,比如背景和前景对象的像素值相似。
这是程序代码:
import processing.core.*;
import processing.video.*;
import gab.opencv.*;
public class BackgroundSubtraction extends PApplet {
Movie video;
OpenCV opencv;
public void setup(){
size(720,680);
video = new Movie(this, "/home/gurinderbeer/Downloads/IMG_1570.MOV");
opencv = new OpenCV(this, width, height);
opencv.startBackgroundSubtraction(0, 3, .5); // 5,3, .5
video.play();
}
public void draw() {
image(video, 0, 0);
opencv.loadImage(video);
opencv.updateBackground();
opencv.dilate();
opencv.erode();
noFill();
stroke(255, 0, 0);
strokeWeight(3);
for (Contour contour : opencv.findContours()) {
contour.draw();
}
}
public void movieEvent(Movie m) {
m.read();
}
public static void main(String _args[]){
PApplet.main(new String[] { BackgroundSubtraction.class.getName()});
}
}这些是视频中的几个快照。我们几乎看不到任何降雪(尽管实际上有非常小的降雪),有两个行人在走。但是它们不会在轮廓检测中被捕获。
这场小雪会不会是不能检测到行人的原因。
发布于 2016-02-12 12:01:29
这可能是由于来自环境的背景噪声,你可以在处理之前对你的视频使用平滑效果。
平滑一定会模糊噪声,从而提高整体检测率。
这里有一个here示例。
https://stackoverflow.com/questions/35321082
复制相似问题