实现步骤:
图像灰度化
边缘检测
根据Canny检测得出来的Mat寻找轮廓
算出最大轮廓周长or面积
根据获取到的最大轮廓下标进行轮廓绘制
画出最大矩形,并返回Rect
Canny边缘检测
基于Canny算法的边缘检测主要有5个步骤,依次是高斯滤波、像素梯度计算、非极大值像素梯度抑制、滞后阈值处理和孤立弱边缘抑制。Canny在有噪声的情况下表现好不好,取决于前面的降噪过程,可以手动做高斯处理提高识别率。
/**
image 输入图像,必须是CV_8U的单通道或者三通道图像。
edges 输出图像,与输入图像具有相同尺寸的单通道图像,且数据类型为CV_8U。
threshold1 第一个滞后阈值。
threshold2 第二个滞后阈值。
apertureSize Sobel算子的直径。
L2gradient 计算图像梯度幅值方法的标志。默认为false
**/
public static void Canny(Mat image, Mat edges, double threshold1, double threshold2, int apertureSize, boolean L2gradient)
使用
/**
* canny算法,边缘检测
*/
public static Mat canny(Bitmap bitmap) {
Mat mSource = new Mat();
Utils.bitmapToMat(bitmap, mSource);
Mat grayMat = new Mat();</