Android OpenCV Drawing Hough Lines

Я пытаюсь использовать OpenCV на телефоне Android для обнаружения линий. Я изменил образец «Урок 1 Базовый - 2. Использовать камеру OpenCV». Я также использую Преобразование линии Хафа в качестве примера. Однако я получаю странные числа (по крайней мере, то, что я считаю странными) для точек. В диапазоне от 1000 до -1000 для b.

Я не совсем понимаю код (в основном это часть о добавлении / вычитании 1000 * (a или -b)).

В конце концов, я вообще не вижу линий.

Может ли кто-нибудь помочь мне? Также дайте мне знать, если вам понадобится дополнительная информация.

capture.retrieve(mGray, Highgui.CV_CAP_ANDROID_GREY_FRAME);
Imgproc.Canny(mGray, mIntermediateMat, 80, 100);
Imgproc.HoughLines(mIntermediateMat, mLines, 1, Math.PI/180, 100);

Scalar color = new Scalar(0, 0, 255);

double[] data;
double rho, theta;
Point pt1 = new Point();
Point pt2 = new Point();
double a, b;
double x0, y0;
for (int i = 0; i < mLines.cols(); i++)
{
    data = mLines.get(0, i);
    rho = data[0];
    theta = data[1];
    a = Math.cos(theta);
    b = Math.sin(theta);
    x0 = a*rho;
    y0 = b*rho;
    pt1.x = Math.round(x0 + 1000*(-b));
    pt1.y = Math.round(y0 + 1000*a);
    pt2.x = Math.round(x0 - 1000*(-b));
    pt2.y = Math.round(y0 - 1000 *a);
    Core.line(mIntermediateMat, pt1, pt2, color, 3);
}

Imgproc.cvtColor(mIntermediateMat, mRgba, Imgproc.COLOR_GRAY2BGRA, 4);

Bitmap bmp = Bitmap.createBitmap(mRgba.cols(), mRgba.rows(), Bitmap.Config.ARGB_8888);

if (Utils.matToBitmap(mRgba, bmp))
    return bmp;

bmp.recycle();
return null;

16
задан miningold 28 October 2011 в 06:01
поделиться