2013-05-29 10 views
5

में खुला सीवी का उपयोग कर मैं आवेदन जिसमें मैं आयताकार वस्तु का पता लगाने और रूपरेखा मैं ओपन सीवी एंड्रॉयड पुस्तकालय का उपयोग कर रहा आकर्षित करने के लिए है विकासशील हूँ रूपरेखा आकर्षित ....छवि में आयत का पता लगाने और एंड्रॉयड

मैं सफलतापूर्वक सर्किल का पता लगाने और छवि के अंदर रूपरेखा आकर्षित लेकिन बार-बार वर्ग या आयत का पता लगाने और आकर्षित करने के लिए असफल .... यहाँ चक्र के लिए करने के लिए अपने कोड है ..

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); 

किसी भी मदद के लिए एंड्रॉयड के लिए वर्ग/आयत का पता लगाने ...... मैं मैं 2 दिनों से सोच रहा हूं .. हर उदाहरण सी ++ या सी ++ में है और मैं उन भाषाओं से नहीं जा सकता ...

धन्यवाद।

+0

क्या आप धुरी संरेखित आयताकारों की तलाश में हैं या उन्हें घुमाया जा सकता है? – cxyzs7

+0

उत्तर के लिए धन्यवाद .... Kindley मुझे विचार अक्ष अक्षरों को संरेखित करें .. कृपया –

+0

सुनिश्चित करें, उदाहरण के लिए, http://jamessadlier.files.wordpress.com/2012/01/aligned.png, नीला एक धुरी संरेखित है लाल लाल नहीं है। – cxyzs7

उत्तर

0

आप Houghtransformation का उपयोग करके सही तरीके से हैं। Houghcircles का उपयोग करने के बजाय आपको Houghlines का उपयोग करना होगा और चौराहे के लिए प्राप्त लाइनों की जांच करें। यदि आपको वास्तव में आयत (और 4 किनारों वाले पॉलीगोन नहीं) मिलते हैं - आपको एक ही कोण (+ - एक छोटा ऑफसेट) वाली रेखाओं की तलाश करनी चाहिए और यदि आपको कम से कम इन पंक्तियों में से एक जोड़ी मिलती है तो आपको उन रेखाओं को देखना होगा जो रेखाएं हैं इसके लिए लंबवत, एक जोड़ी भी ढूंढें और छेड़छाड़ की जांच करें। यह कोण और चौराहे परीक्षण करने के लिए वैक्टर (एंडपॉइंट - स्टार्टपॉइंट) और लाइनों का उपयोग करके एक बड़ा सौदा नहीं होना चाहिए।

संबंधित मुद्दे