实时检测图像中的主要边缘 opencv for Android
02 public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
03 mRgba = inputFrame.rgba();
04 mGray = inputFrame.gray();
05 Mat cannyMat = new Mat();
06 Imgproc.Canny(mGray, cannyMat, HYSTERESIS_THRESHOLD1, HYSTERESIS_THRESHOLD2, 3, false);
07 Imgproc.HoughLinesP(cannyMat, lines, 1, Math.PI/180, ACCUMULATOR_THRESHOLD, MINLINELENGTH, MAXLINEGAP);
08
09 for (int x = 0; x < lines.cols() && x < HOUGH_LINE_COUNT; x++) {
10 double[] vec = lines.get(0, x);
11 if(vec!=null) {
12 double x1 = vec[0],
13 y1 = vec[1],
14 x2 = vec[2],
15 y2 = vec[3];
16 Point start = new Point(x1, y1);
17 Point end = new Point(x2, y2);
18 Core.line(mRgba, start, end, new Scalar(255,0,0), 3);
19 }
20 }
21
22 return mRgba;
23 }
MAXLINEGAP: 在一条线中,两点的最大间隔。如果两点间的间隔超过了 MAXLINEGAP,这两点就必定无法在一条线上