【发布时间】:2019-08-19 07:32:20
【问题描述】:
我正在开发一个应用程序来处理帧,并在 Android 中使用 Opencv 实时进行分割和图像匹配。
主要问题是,只有当相机帧中有要处理的对象并且背景不固定时,我才需要开始此图像处理,这使我的任务变得更加困难。
我尝试了许多解决方案,例如使用absdiff 进行运动检测,这是代码
imgSource = inputFrame.rgba().t();
Core.transpose(imgSource, imgSource);
//imgSource.convertTo(enhancedMat, imgSource.type(), 1.3);
gray = imgSource;
Imgproc.cvtColor(imgSource, gray, Imgproc.COLOR_BGR2GRAY);
Imgproc.GaussianBlur(gray, gray, new Size(25, 25), 5);
if (firstframe == null) {
firstframe = gray;
}
Core.absdiff(firstframe, gray, frameDelta);
Imgproc.threshold(frameDelta, frameDelta, 25, 255, Imgproc.THRESH_BINARY);
for (int i =0 ; i <2 ; i++)
Imgproc.dilate(frameDelta, frameDelta, Imgproc.getStructuringElement(Imgproc.THRESH_BINARY, new Size(3, 3)));
Imgproc.findContours(frameDelta, abs_contours, abs_hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
for (int idx = 0; idx < abs_contours.size(); idx++) {
double a = Imgproc.contourArea(abs_contours.get(idx)); //Find the area of contour
if (a < 10000) {
continue;
}
Rect rect = Imgproc.boundingRect(abs_contours.get(idx));
Imgproc.rectangle(imgSource, rect.tl(), rect.br(), new Scalar(0, 255, 0), 2);
}
我也尝试使用这个 Opencv 方法createBackgroundSubtractorMOG2 进行背景减法。
它们都不起作用,因为背景也在移动,所以这些逻辑根本不可靠。
对于这类问题有什么我必须遵循的方法或任何解决方案吗?
我希望你们能指导我找到一个好的解决方案,并提前谢谢你们。
【问题讨论】:
标签: java android image-processing computer-vision opencv4android