【发布时间】:2017-02-22 08:40:52
【问题描述】:
我使用的是 OpenCV4Android 3.1.0 版,我想删除从 Android 相机拍摄的每一帧的背景。我提到了一些帖子,我的理解是,因为背景应该从非静态中删除
背景“Android Camera”我应该使用createBackgroundSubtractorMOG2
根据示例,我正在使用createBackgroundSubtractorMOG2,如下面的代码所示。但是在运行时,无论从相机中检索到的帧中的背景如何变化,我都会得到掩码 fgmask 始终包含
一张白色的图片。
请告诉我如何使用createBackgroundSubtractorMOG2
代码:
//use createBackgroundSubtractorMOG2
fgmask = new Mat();
BackgroundSubtractorMOG2 bgs = Video.createBackgroundSubtractorMOG2(30, 16, false);
bgs.apply(mMatInputFrame,fgmask,0);
//to display the mask
final Bitmap bitmap = Bitmap.createBitmap(this.mMatInputFrame.cols(), this.mMatInputFrame.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(this.fgmask, bitmap);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mIVEdges.setImageBitmap(bitmap);
}
});
【问题讨论】:
-
你在移动相机吗?
-
是的..你能告诉我为什么问这个问题吗?有关系吗??
-
是的。如果背景发生变化(因为您正在移动相机),那么背景减法将不起作用!静态背景是其正常工作所必需的
-
试着把你的手机放在桌子上,你会发现这是有效的。一旦你移动它,那么所有的白色前景;D
-
背景减法不适用于非静态背景。因此,您最好忘记这种方法,并从检测您想要在图像中找到的任何内容开始。
标签: android opencv opencv3.0 object-detection opencv-contour