我想之前问过这个问题,但我找不到问题的样本或解决方案 . 我是opencv的新手,我想使用OpenCV CameraPreview进行纸张检测 . 在我的示例应用程序中,我使用opencv 3.0.0进行静态初始化 . 我知道对象识别可以通过以下步骤完成:
-
制作输入图像Canny
-
模糊Canny图像
-
在模糊的Canny图像上查找轮廓
-
搜索矩形等
-
绘制线条或用半透明颜色填充矩形
我现在的问题是,我可以精确地模糊图像,但我不知道如何找到轮廓和矩形,并用半透明的颜色填充它们 .
这是我目前的onCameraFrame功能:
@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
Mat input = inputFrame.rgba();
Mat output = input.clone();
Imgproc.Canny(input, output, 50, 50);
Imgproc.blur(output, output,new Size(5,5));
//Find Contours
//Search for biggest Contour/Rectangle
//Fill Rectangle with half transparent Color
return output;
}
任何人都可以帮我解决纸张检测问题,并为android / java提供代码示例吗?谢谢
1 回答
以下代码来自我正在开发的Open Note Scanner应用程序,您可以使用它来查找更多信息 .
函数findDocument将返回一个Quadrilateral对象,该对象封装了一个带有轮廓的MatOfPoint和一个带有各个点的Point [] . 您可以调用它并使用返回的对象调用Imgproc.drawContours()来完成您的图像 .
所有代码都是以this excellent tutorial from pyimagesearch为基础编写的
注意:这是从我的代码快速移植方法,它没有语法错误但我没有测试它 .