2013-05-29 36 views
5

Tôi đang phát triển ứng dụng trong đó tôi phải phát hiện đối tượng hình chữ nhật và vẽ phác thảo Tôi đang sử dụng thư viện Android cv mở ....Phát hiện hình chữ nhật trong hình ảnh và vẽ phác thảo bằng cách sử dụng cv mở trong android

Tôi phát hiện thành công Circle và vẽ phác thảo bên trong hình ảnh nhưng nhiều lần không phát hiện được Quảng trường hoặc hình chữ nhật và vẽ .... Đây là mã của tôi cho vòng kết nối ..

Bitmap imageBmp = BitmapFactory.decodeResource(MainActivityPDF.this.getResources(),R.drawable.loadingplashscreen); 

Mat imgSource = new Mat(), imgCirclesOut = new Mat(); 

Utils.bitmapToMat(imageBmp , imgSource); 

    //grey opencv 
Imgproc.cvtColor(imgSource, imgSource, Imgproc.COLOR_BGR2GRAY); 

Imgproc.GaussianBlur(imgSource, imgSource, new Size(9, 9), 2, 2); 
Imgproc.HoughCircles(imgSource, imgCirclesOut, Imgproc.CV_HOUGH_GRADIENT, 1, imgSource.rows()/8, 200, 100, 0, 0); 

float circle[] = new float[3]; 

for (int i = 0; i < imgCirclesOut.cols(); i++) 
{ 
     imgCirclesOut.get(0, i, circle); 
    org.opencv.core.Point center = new org.opencv.core.Point(); 
    center.x = circle[0]; 
    center.y = circle[1]; 
    Core.circle(imgSource, center, (int) circle[2], new Scalar(255,0,0,255), 4); 
    } 
    Bitmap bmp = Bitmap.createBitmap(imageBmp.getWidth(), imageBmp.getHeight(), Bitmap.Config.ARGB_8888); 

    Utils.matToBitmap(imgSource, bmp); 


    ImageView frame = (ImageView) findViewById(R.id.imageView1); 

    //Bitmap bmp = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); 
    frame.setImageBitmap(bmp); 

bất kỳ trợ giúp nào để phát hiện hình vuông/hình chữ nhật cho android ...... I đang tự hỏi từ 2 ngày .. ví dụ bất kỳ là trong hoặc C + + hoặc trong C + + và tôi không thể nhận được thông qua các ngôn ngữ đó ...

Cảm ơn.

+0

bạn đang tìm kiếm hình chữ nhật được căn chỉnh trục hay chúng có thể được xoay? – cxyzs7

+0

cảm ơn bạn đã trả lời .... kindley cho tôi ý tưởng chỉnh sửa trục được liên kết ý tưởng..vui lòng –

+0

chắc chắn, ví dụ: http://jamessadlier.files.wordpress.com/2012/01/aligned.png, màu xanh lam được căn chỉnh theo trục , màu đỏ thì không. – cxyzs7

Trả lời

0

Bạn đang đi đúng hướng bằng cách sử dụng Thông tin chuyển đổi. Thay vì sử dụng Houghcircles bạn phải sử dụng Houghlines và kiểm tra các đường thu được cho các giao lộ. Nếu bạn thực sự phải tìm hình chữ nhật (và không phải 4 cạnh đa giác) - bạn nên tìm các dòng có cùng góc (+ - một khoảng nhỏ) và nếu bạn tìm thấy ít nhất một cặp các dòng này, bạn phải tìm các dòng nằm vuông góc với điều này, tìm một cặp là tốt và kiểm tra giao lộ. Nó không phải là một việc lớn bằng cách sử dụng vectơ (điểm cuối - điểm bắt đầu) và các dòng để thực hiện các phép thử góc và giao lộ.

Các vấn đề liên quan